最新的Android NDK(r21c)的libbinder_ndk缺少了几个导出的API。

问题描述 投票:0回答:1

我有兴趣使用 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以来,已经有了 根据责备记录。

我是否遗漏了什么?

android android-ndk native android-binder
1个回答
1
投票

它们没有被导出的原因是,它们不是应用程序API表面的一部分。它们存在于供应商和APEX模块中。这些域并不像应用程序那样具有相同的API永久保证(读:它们可能在任何特定的版本中消失)。

© www.soinside.com 2019 - 2024. All rights reserved.