在Android中,PackageManager类具有函数getSharedLibraries
,该函数返回构建在操作系统中的共享库列表。
我想做的是通过反射使用其中一个库,以便调用一些功能。
在某些背景下,我将来将在AOSP中实现我自己的系统库,但目前正在尝试测试如何实现上述功能。
在我构建的Android中,有一个名为android.ext.services
的系统共享库,我正在使用它进行测试。我已经尝试通过System.loadLibrary("android.ext.services")
加载,但这会抛出UnsatisfiedLinkError
。
为了加载android.ext.services库并通过反射访问它,我缺少什么?
我遇到了各种各样的来源,这在某种程度上意味着我的项目中必须有一份本地的图书馆副本,尽管我不明白为什么我不能从操作系统中获得。
事实证明,您所需要做的就是在应用程序清单中链接库。这将告诉系统在包的类加载器中包含库的代码。
https://developer.android.com/guide/topics/manifest/uses-library-element
对于任何新的共享库,都应该将其添加到public.libraries.txt 中
有关更多信息,请参阅此:
https://source.android.com/devices/tech/config/namespaces_libraries