问题描述
我在供应商分区中创建了一个新模块。当我尝试将我的模块与框架链接时,我不断收到此错误。我无法理解 sdk_version 的不同变体之间的关系。 "system_server_current","current","core_platform","module_current" ...
是否有可以解释这些并解决以下问题的文档?
wifi-service-pre-jarjar 依赖于 newmodule。
错误:frameworks/opt/net/wifi/service/Android.bp:47:1:模块“wifi-service-pre-jarjar”变体“android_common”:针对系统服务器API编译,但依赖“newmodule”是针对私有 API 进行编译。调整 sdk_version:源或目标模块的属性,以便使用与源相同或更小的 API 集构建目标模块。
解决方法
我根据 Android 8.1
,Introduce link_type in AOSP build system 为它写了一个注释。看起来 Android 11
引入了更多 link_type
。
sdk_version
基于 link_type
,用于拆分系统和应用之间的依赖关系。如果您的应用仅使用标准 SDK API,则应将 sdk_version
设置为 current
或特定 API 版本。否则,您应该根据您使用的 API 将 sdk_version
设置为 system
或其他变体,或者直接设置 platform_apis: true
以让您的模块使用私有 API。
如果您的依赖模块使用私有 API,则您的模块会继承使用私有 API 的状态。这个状态可以从你的依赖模块,或者依赖模块的依赖模块等传递给你的模块。
您可以查看 Android 11
的构建系统源代码,以了解有关 sdk_version
的更准确和详细的知识。