首页 > 解决方案 > 什么可以在 Android N+ 上加载私有原生库?

问题描述

我必须在我的应用程序中加载一些硬件专有的非 NDK(即私有)平台原生库;由于较长的依赖链和各个设备实现的差异,按照Google 的建议捆绑本机库的副本是不切实际的。由于这些库是特定于硬件的,因此无法将它们添加到NDK 或 VNDK中。

由于甚至不再允许系统应用程序加载私有本机库,我不确定 Android 组件能够做到什么。我偶然发现从 /system/priv-app 安装和运行的应用程序似乎通过了,因为 /system/lib 被认为在他们的库搜索路径上,但是在通常的 /data 分区中安装的更新会丢失访问(因此不能选择带有稍后更新的存根特权应用程序)。我宁愿避免使用不可更新的 /system/priv-app 解决方案,而且无论如何我还没有在任何地方发现这种解决方法,所以我怀疑它是一个官方和可靠的替代方案。

我可以访问我的设备的完整系统源代码,因此添加框架模块是一个很好的解决方案;但是,我不确定在这种情况下什么构成“框架代码”和/或可以访问 Android N+ 上的私有本机库。

Android 的哪些组件可以访问私有原生库?

通过 ServiceManager 和 Context.getSystemService() 可发现的系统服务是否可以访问私有本地库?

标签: androidandroid-ndkandroid-source

解决方案


Aiui 这就是 VNDK 的用途。

Android 的哪些组件可以访问私有原生库?

系统服务。不是应用程序;正常程序。


推荐阅读