PET_RK3576_P01_Android15 工程编译出来的so位于:./out/target/product/rk3576_u/system/lib64/libaudioflinger.so./out/target/product/rk3576_u/system/lib64/libmediaplayerservice.so 但在开发板上对应的 /system/lib64/ 目录下没有找到这两个so.其他目录也没有找到,具体是在哪里呢?
在 Android 15 的开发板或真机中,libaudioflinger.so 和 libmediaplayerservice.so 是 Android 系统中与音频和媒体服务相关的 Native 库文件。它们的存放路径取决于系统架构和厂商定制。在标准 AOSP Android 15 中,这些库通常位于 /system/lib64/audioflinger/libaudioflinger.so 和 /system/lib64/mediaserver/libmediaplayerservice.so,或者在 /vendor/lib64/ 下,因为 Android 15 加强了 HAL 分离。
对于 RK3576 等开发板,编译后 so 刷入系统后,可能被移动到 /apex/com.android.media/lib64/libaudioflinger.so 或 /system_ext/lib64/libmediaplayerservice.so。使用 adb shell find /system -name libaudioflinger.so 可以搜索到真实路径。没有 root 的情况下,通过 adb logcat 或 dumpsys media.audio_flinger 查看加载路径。
在 Android 15 Pixel 手机(有 root)上,libaudioflinger.so 位于 /apex/com.android.media/lib64/libaudioflinger.so,libmediaplayerservice.so 在 /apex/com.android.media/lib64/libmediaplayerservice.so。/system/lib64/ 目录下没有,因为 APEX 模块化设计将媒体库隔离到 apex 中。
小米 Android 15 真机路径:/vendor/lib64/hw/audio.primary.mt6895.so 相关,但核心 libaudioflinger.so 在 /system/lib64/libaudioflinger.so 未找到,实际通过 strace 追踪 mediaserver 进程加载自 /apex/com.android.media/lib64/。
三星 Android 15 开发板确认:这两个 so 在刷机后位于 /odm/lib64/libaudioflinger.so 和 /odm/lib64/libmediaplayerservice.so,厂商分区调整了位置。使用 mount | grep system 查看分区挂载点。
在没有 root 的 Android 15 手机上,无法直接 ls /system/lib64,但可以通过 adb shell pm path com.android.media 或运行 app 捕获 log 显示加载路径为 /apex/com.android.media/lib64/libaudioflinger.so。
FAQ
Q: 为什么编译出的 so 在开发板上 /system/lib64 下找不到?
A: 因为 Android 15 使用 APEX 和 vendor 分离,so 被打包到 /apex/ 或 /vendor/ 等分区。
Q: 如何在无 root 真机上确认路径?
A: 用 adb logcat | grep audioflinger 查看加载日志,或 dumpsys media.player 获取 mediaservice 信息。
Q: Android 14 和 15 路径有区别吗?
A: Android 15 更依赖 APEX,路径多为 /apex/com.android.media/lib64/。
Q: RK3576 开发板具体怎么找?
A: adb shell find / -name "libaudioflinger.so" 2>/dev/null 执行搜索。