Android16+Kernel6.12 SOC移植报错:无法扩展relative_install_path属性
问题描述
在为自有SOC适配Android 16 + Kernel 6.12时,构建过程出现如下报错:
Building Android16 with Kernel 6.12 for my SOC [100% 2/2] analyzing Android.bp files and generating ninja file at host_tools/soong/build.full_erd8855_v.ninja FAILED: host_tools/soong/build.full_erd8855_v.ninja cd "$(dirname "host_tools/host/linux-x86/bin/soong_build")" && BUILDER="$PWD/$(basename "host_tools/host/linux-x86/bin/soong_build")" && cd / && env -i "$BUILDER" --top "$TOP" --soong_out "host_tools/soong" --out "host_tools" --soong_variables host_tools/soong/soong.full_erd8855_v.variables -o host_tools/soong/build.full_erd8855_v.ninja -l host_tools/.module_paths/Android.bp.list --available_env host_tools/soong/soong.environment.available --used_env host_tools/soong/soong.environment.used.full_erd8855_v.build Android.bp aidl_ahal = map[ble_offload:true] aidl_sthal = map[audio_exynos_headers:erd8855_sec audioroute:true] panic: can't extend property "relative_install_path": failed to find property to extend
关联的Android.bp代码片段:
soong_config_module_type { name: "audio_exynos_headers_cc_defaults", module_type: "cc_defaults", config_namespace: "aidl_sthal", variables: [ "audio_exynos_headers", ], properties: [ "header_libs", ], } soong_config_string_variable { name: "audio_exynos_headers", values: ["erd8855_sec", "erd9955_sec", "erd9965_sec"], } audio_exynos_headers_cc_defaults { name: "audio_xxx_headers_default", soong_config_variables: { audio_exynos_headers: { erd8855_sec: { header_libs: [ "//device/xxx/audio/erd8855_sec/audio:libaudio_xxx_headers", ], },
该SOC此前在Android 15 + Kernel 6.6环境下适配正常,已确认相关Android.bp中relative_install_path属性语法无误,需排查问题原因。
问题排查与解决建议
- 显式声明可扩展属性:当前
soong_config_module_type仅注册了header_libs作为可通过soong_config扩展的属性,但报错涉及relative_install_path。Android 16的Soong构建系统对属性扩展的管控更严格,需将该属性加入到properties列表中:soong_config_module_type { name: "audio_exynos_headers_cc_defaults", module_type: "cc_defaults", config_namespace: "aidl_sthal", variables: [ "audio_exynos_headers", ], properties: [ "header_libs", "relative_install_path", // 新增此行,允许扩展该属性 ], } - 检查模块继承链:排查所有继承
audio_xxx_headers_default的模块,确认是否有模块尝试通过+=或soong_config扩展relative_install_path属性。若存在此类模块,需确保对应的soong_config_module_type已注册该属性。 - 验证Soong规则变更:Android 16对
cc_defaults的属性处理逻辑可能发生变化,对比Android 15的Soong行为,确认relative_install_path是否成为cc_defaults的默认属性,以及是否需要显式声明才能通过soong_config扩展。 - 修复代码语法问题:提供的Android.bp片段存在未闭合的括号,需确保实际代码中所有花括号、方括号都正确闭合,避免语法错误引发的间接问题。
内容的提问来源于stack exchange,提问作者Manjunath Naik C
相关产品推荐
相关产品推荐

