我有兴趣使用 AServiceManager_getaddService() 通过binder的NDK实现提供的API。libbinder_ndk
.
这方面的来源可以在这里找到 适用于10.0.0r30-API29。,在你的AOSP树上。
$SDK/frameworks/native/libs/binder/ndk/
然而,在你的AOSP树中 libbinder_ndk.so
捆绑 最新的r21c NDK 是否 不 有所有这些API的导出,很多都有,但getadd服务端点不可用。很多都有,但getadd服务端点不可用。的 libbinder_ndk.so
可以在以下网址找到API29的目录。
$NDK/platforms/android-29/$PLAT/usr/lib/libbinder_ndk.so
以及每个工具链的sysroot目录,但只有API29的目录。
$NDK/toolchains/llvm/prebuilt/$HOST/sysroot/usr/lib/$PLAT/29/libbinder_ndk.so
但如果你为这个相同的版本建立AOSP树,当然可以使用这些符号。
$ readelf --wide -s libbinder_ndk.so | grep AService
180: 000000000000e148 256 FUNC GLOBAL DEFAULT 15 AServiceManager_addService@@LIBBINDER_NDK
181: 000000000000e248 244 FUNC GLOBAL DEFAULT 15 AServiceManager_checkService@@LIBBINDER_NDK
224: 000000000000e33c 244 FUNC GLOBAL DEFAULT 15 AServiceManager_getService@@LIBBINDER_NDK
事实上,一个 检索文献 不返回这些API的任何结果,但源码的 自2018-08-20以来,已经有了 根据责备记录。
我是否遗漏了什么?
它们没有被导出的原因是,它们不是应用程序API表面的一部分。它们存在于供应商和APEX模块中。这些域并不像应用程序那样具有相同的API永久保证(读:它们可能在任何特定的版本中消失)。