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

旧Android项目迁移AndroidX后运行报Aapt2资源编译错误如何解决?

错误根因

这个报错是AAPT2(Android资源编译工具)的严格校验规则触发的,规则要求id类型的<item>标签内部只能是空内容或者合法的资源引用,不能填写自定义文本/数值。
旧版本AAPT允许<item>标签带自定义内容,你这个是旧项目升级AndroidX、升级AGP版本后,默认启用AAPT2,触发了更严格的资源校验规则。

解决步骤
  • 第一步:定位错误的资源定义
    不要修改build目录下临时生成的values.xml,直接全局搜索报错行对应的<item>的name属性值,找到你项目/src/main/res/values目录下的原始资源文件(通常是ids.xml、attrs.xml或者自定义的values配置文件)。
  • 第二步:修正错误写法
    错误写法示例:
    <item name="custom_tag" type="id">自定义内容</item>
    
    改为符合AAPT2规则的写法,直接清空标签内容即可:
    <item name="custom_tag" type="id" />
    
  • 第三步:兼容配置(修正资源后仍报错可尝试)
    1. 你当前配置的buildToolsVersion "27.0.3"和compileSdkVersion 29版本不匹配,可直接删除buildToolsVersion配置行,AGP会自动匹配和compileSdkVersion兼容的build tools版本。
    2. 清理缓存后重新构建:执行./gradlew clean命令,删除项目根目录下的.gradle、.idea缓存文件夹,再重新编译项目。
    3. 如果错误来自第三方依赖库的资源,可检查升级对应依赖到适配AndroidX的版本,你当前引入的com.specyci:residemenu:1.6、com.basgeekball:awesome-validation:2.0都是未适配AndroidX的旧版本,jetifier自动转换可能出现资源异常,可优先升级这两个依赖的版本。

内容的提问来源于stack exchange,提问作者Cyrus the Great

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:36:06