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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:42:09