Bre*_* K. 5 api sdk vendor android-source
我正在尝试将特定于供应商的 API 添加到我的 AOSP 代码库中。我能够在 Android 5 到 9 上运行此功能,但无法在 Android 10 上解决此问题。
我阅读了 AOSP 文档上用于实现 Java SDK 库的文档
我有以下蓝图文件:
java_sdk_library {
name: "com.mycompany.sdk.myclass",
srcs: ["java/**/*.java"],
api_packages: ["com.mycompany.sdk.myclass"],
}
Run Code Online (Sandbox Code Playgroud)
我使用以下命令生成了 api 子目录:
build/soong/scripts/gen-java-current-api-files.sh "vendor/mycompany/sdk/myclass" && m update-api
Run Code Online (Sandbox Code Playgroud)
这会将我所有的公共方法签名放入 current.txt 文件中。
我将其作为启动 jar 添加到我的顶级 board.mk 文件中:
PRODUCT_BOOT_JARS += com.mycompany.sdk.myclass
Run Code Online (Sandbox Code Playgroud)
构建此文件会创建相应的 com.mycompany.sdk.myclass.xml 权限文件:
<?xml version="1.0" encoding="utf-8"?>
<permissions>
<library name="com.mycompany.sdk.myclass"
file="/system/framework/com.mycompany.sdk.myclass.jar"/>
</permissions>
Run Code Online (Sandbox Code Playgroud)
一切构建和安装都很好。我验证了权限文件位于 /system/etc/permissions/ 中并指向正确的 jar 文件名。但是,当我运行针对我的私有 SDK 构建的测试应用程序时,出现“访问隐藏方法(黑名单、链接、拒绝)”异常:
W/test_app: Accessing hidden method Lcom/mycompany/sdk/myclass;->myMethod(Landroid/content/Context;Z)V (blacklist, linking, denied)
Run Code Online (Sandbox Code Playgroud)
我可以通过发出以下命令来消除此黑名单错误:
adb shell settings put global hidden_api_policy 1
Run Code Online (Sandbox Code Playgroud)
所以我知道我的 jar 正在正确构建和安装。但只是被列入第三方黑名单。
我最终将我的包名称添加到frameworks/base/config/hiddenapi-greylist-packages.txt,突然我的测试应用程序运行,并正确找到私有API。不幸的是,每次方法调用时黑名单错误都会被灰名单警告所取代。我不希望日志中充满这些警告,因此必须将其列入白名单,而不是灰名单。
我尝试将其添加到 /build/make/core/tasks/check_boot_jars/package_whitelist.txt 中,但这没有什么区别。
如何将我的私有 API 列入白名单而不是灰名单?
| 归档时间: |
|
| 查看次数: |
801 次 |
| 最近记录: |