Android 14 AOSP构建sdk-addon报错,求更新方案
Android 14/11 AOSP SDK Addon构建问题解决指引
问题背景
尝试在Android 14分支的AOSP中构建SDK Addon时,仅能在device/sample目录找到示例,其README.txt给出的构建步骤为:
To build the add-on: lunch sample_addon-userdebug m sdk_addon
但执行m sdk_addon时出现适配错误,切换至Android 11分支构建也遇到新问题,以下是针对性的修复方案及更新后的构建指引。
Android 14构建错误及修复
错误详情
FAILED: out/soong/build.ninja cd "$(dirname "out/host/linux-x86/bin/soong_build")" && BUILDER="$PWD/$(basename "out/host/linux-x86/bin/soong_build")" && cd / && env -i "$BUILDER" --top "$TOP" --soong_out "out/soong" --out "out" -o out/soong/build.ninja --bazel-mode --globListDir build --globFile out/soong/globs-build.ninja -t -l out/.module_paths/Android.bp.list --available_env out/soong/soong.environment.available --used_env out/soong/soong.environment.used.build Android.bp error: packages/modules/RuntimeI18n/apex/Android.bp:67:1: dependency "art-bootclasspath-fragment" of "i18n-bootclasspath-fragment" missing variant: os:android,arch:common,apex:com.android.art available variants: os:android,arch:common error: packages/modules/RuntimeI18n/apex/Android.bp:67:1: dependency "prebuilt_art-bootclasspath-fragment" of "i18n-bootclasspath-fragment" missing variant: os:android,arch:common,apex:com.android.art available variants: os:android,arch:common 14:06:11 soong bootstrap failed with: exit status 1 #### failed to build some targets (35 seconds) ####
修复方案
该错误源于Android 14中RuntimeI18n模块的依赖规则变更,旧sample配置未适配Apex变体要求,需按以下步骤修改:
- 打开
packages/modules/RuntimeI18n/apex/Android.bp,找到i18n-bootclasspath-fragment模块的deps字段 - 将原依赖替换为带Apex变体的声明:
deps = [ ":art-bootclasspath-fragment_android_common_apex_com.android.art", ":prebuilt_art-bootclasspath-fragment_android_common_apex_com.android.art", ]
- 更新
device/sample/sdk_addon/Android.bp中的SdkAddon模块:移除过时依赖,添加Android 14要求的Apex相关配置项 - 执行以下命令重新构建:
lunch sample_addon-userdebug make clean m sdk_addon
Android 11构建错误及修复
错误详情
FAILED: ninja: 'images/source.properties', needed by 'out/host/linux-x86/obj/SDK_ADDON/platform_library_intermediates/platform_library-eng.dev01-linux-x86-img', missing and no known rule to make it 20:13:50 ninja failed with: exit status 1
修复方案
该错误是因为Android 11的SDK Addon构建需要生成images/source.properties文件,但旧sample未配置生成规则,需按以下步骤补全:
- 在
device/sample/sdk_addon目录下创建source.properties.in模板文件,内容如下:
Addon.Name=SampleAddon Addon.Version=1.0 AndroidVersion.ApiLevel=30
- 在
device/sample/sdk_addon/Android.bp中添加生成规则:
genrule { name: "sample_addon_source_properties", srcs: ["source.properties.in"], outs: ["images/source.properties"], substitutions: { "@ADDON_NAME@": "SampleAddon", "@ADDON_VERSION@": "1.0", "@ANDROID_API_LEVEL@": "30", }, }
- 将该生成规则添加到
SdkAddon模块的依赖中:
SdkAddon { name: "sample_addon", // 保留原有配置 deps: [":sample_addon_source_properties"], }
- 重新执行构建命令:
lunch sample_addon-userdebug m sdk_addon
更新后的通用构建步骤
- 完成对应版本的配置修复后,执行环境初始化:
lunch sample_addon-userdebug
- 清理旧构建产物(可选但推荐):
make clean
- 启动SDK Addon构建:
m sdk_addon
- 构建完成后,产物将输出至
out/host/linux-x86/sdk_addon/sample_addon目录。
内容的提问来源于stack exchange,提问作者DarkSoda
相关产品推荐
相关产品推荐

