共享库与JNI原生依赖
什么是共享库
有些应用需要调用非 Java/Kotlin 写的原生代码——通常是 C 或 C++ 编译的 .so 文件(JNI = Java Native Interface)。游戏引擎(Unity、Unreal)、视频编解码器、加密库等都常用原生代码来获得更好的性能。
App Manager 在应用详情页专门有一个「共享库」标签页,列出所有 JNI 原生库。
两类共享库
动态共享库(Dynamic Libraries)
这是应用 APK 里直接打包的 .so 文件,跟应用一起安装、一起卸载。比如一个游戏 APK 里会打包 ARM64、ARMv7、x86 等架构下的 .so 文件以支持不同设备。
App Manager 会列出每个 .so 的:
- 文件名
- ABI 架构(arm64-v8a / armeabi-v7a / x86_64 等)
- 大小
静态共享库(Static Shared Libraries)
Android 9+ 引入的机制,一个应用可以把自己的原生库暴露给其他应用使用。系统里常见的例子是 Trichrome——由 Chrome 提供的 WebView 内核,Chrome、Vanadium 等都共享它。
在 App Manager 里,静态共享库会用「静态共享库」标签云标记,点击可查看版本号和已安装库,还能直接卸载。
什么时候关注共享库
- 排查兼容问题——某些应用崩溃是因为设备架构不匹配缺少对应 .so
- 判断是否为大型应用——有原生库的应用通常 APK 更大、运行时占用更多内存
- 静态共享库冲突——如果同时装了 Chrome 和 Vanadium,Trichrome 可能产生版本覆盖问题
App Manager 的共享库标签页把这些信息集中在一个地方,比在系统文件管理器里翻找方便得多。