You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 10 AOSP中如何将vendor自定义API加入白名单而非灰名单

Android 10 Vendor自定义API加入隐藏API白名单方案

Android 10 引入了更严格的隐藏API限制机制,你之前添加灰名单、check_boot_jars白名单的操作均不匹配需求,按以下步骤操作即可完全消除调用告警:

  • 方案一:修改java_sdk_library蓝图配置(推荐,无需修改系统公共配置)
    给你的库新增hiddenapi_whitelisted属性,标记整个库的API都属于白名单,不受隐藏API规则限制:
    java_sdk_library {
      name: "com.mycompany.sdk.myclass",
      srcs: ["java/**/*.java"],
      api_packages: ["com.mycompany.sdk.myclass"],
      // 新增以下两个配置
      hiddenapi_whitelisted: true,
      sdk_version: "core_current",
    }
    
  • 方案二:全局配置白名单包列表
    如果你不想修改单库的bp文件,可以选择修改全局白名单配置:
    1. 找到frameworks/base/config/hiddenapi-whitelist-packages.txt,若文件不存在则手动创建,添加你的包名:
      com.mycompany.sdk.myclass
      
    2. 如果你不想修改frameworks目录下的源码,也可以直接在项目板级mk配置(比如device/[厂商]/[产品]/board.mk)中添加如下配置,效果完全一致:
      PRODUCT_HIDDENAPI_WHITELIST_PACKAGES += com.mycompany.sdk.myclass
      
  • 最后重新生成API文件并全编译固件即可:
    build/soong/scripts/gen-java-current-api-files.sh "vendor/mycompany/sdk/myclass" && m update-api
    make -j$(nproc)
    

原理解释

  • hiddenapi-greylist-packages.txt对应的是灰名单规则,加入的包名下的API允许调用,但每次调用都会输出警告,完全匹配你之前遇到的现象
  • /build/make/core/tasks/check_boot_jars/package_whitelist.txt是boot jar包名合法性检查规则,作用是禁止不符合要求的包名加入boot jars,和隐藏API限制完全无关,所以添加后不会有任何效果
  • hiddenapi_whitelisted属性或者白名单包配置中的包名下所有公共API,都会被编译系统标记为公开API,不会触发任何隐藏API限制和警告

内容的提问来源于stack exchange,提问作者Brent K.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:24:00