在 Android 中使用系统共享库

Utilising system shared libraries in Android

在 Android 中,PackageManager class 具有函数 getSharedLibraries,其中 returns 内置于 os 中的共享库列表。

我希望能够通过反射使用这些库之一来调用某些功能。

一些背景,我将来会在 AOSP 中实现我自己的系统库,但现在我正在尝试测试如何实现上述功能。

在我构建的 Android 中,有一个名为 android.ext.services 的系统共享库,我正在对其进行测试。我尝试通过 System.loadLibrary("android.ext.services") 加载,但这会引发 UnsatisfiedLinkError.

为了加载 android.ext.services 库并通过反射访问它,我缺少什么?

我已经获得了 acros 的各种来源,这在某种程度上暗示我必须在我的项目中拥有该库的本地副本,但我不明白为什么我不能从 os.

事实证明,您只需 link 应用程序清单中的库即可。这将告诉系统将库的代码包含在包的 class 加载程序中。

https://developer.android.com/guide/topics/manifest/uses-library-element

对于任何新的共享库,都应将其添加到 public.libraries.txt

有关详细信息,请参阅此内容:

https://source.android.com/devices/tech/config/namespaces_libraries