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

升级AGP至7.2.1后报AAPT invalid locale 'be-'编译错误如何解决

问题描述

在Android Studio中将Android Gradle插件升级到7.2.1版本后,项目出现编译报错,具体错误信息如下:

AAPT: error: failed to deserialize resource table: configuration has invalid locale 'be-'.

使用如下旧版本配置时项目可正常编译运行:

classpath 'com.android.tools.build:gradle:4.0.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.10"

升级为如下版本配置后触发上述编译错误:

classpath 'com.android.tools.build:gradle:7.2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
问题原因

Android Gradle插件从7.0版本开始升级了内置的AAPT2资源编译工具,对资源locale标识的校验规则比4.x版本严格很多:旧版本会自动忽略格式不符合规范的locale标识,不会阻断编译;新版本遇到不合法的locale标签会直接抛出编译错误。
报错里提到的be-属于无效locale标识,不符合BCP 47语言标签规范:合法的白俄罗斯语相关标签要么是不带后缀的be,要么是带完整地区码的标签比如be-BY,末尾带半截横杠的写法属于格式错误,一般来自三种情况:项目自身资源目录命名错误、build.gradle里的resConfigs配置写错、引入的第三方依赖中打包了带无效locale的资源。

解决方案

按优先级依次排查处理即可:

  • 检查项目自身各模块的res资源目录,查找是否存在命名类似values-be-的不合法文件夹。如果不需要配置地区维度,直接重命名为values-be;如果需要匹配特定地区,补全对应地区码改成合法命名,比如values-be-BY。
  • 检查对应模块build.gradle中defaultConfig块下的resConfigs配置,确认是否误填入了be-这类无效值,找到后直接删除或修正为合法的locale标识。
  • 如果无效locale来自第三方依赖,无法直接修改资源内容,可以在模块的android配置块中添加如下配置,关闭AAPT2的locale强校验:
android {
    // 原有其他配置保持不变
    aaptOptions {
        additionalParameters "--locale-validation-mode", "ignore"
    }
}

内容的提问来源于stack exchange,提问作者PhantomThief

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 07:30:52