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

Android编译报错:mergeDebugResources执行失败(attr/size资源重复)

解决资源attr/size重复定义的编译错误

问题本质

这是Android资源合并时的冲突问题:第三方库jetified-colorpicker-0.9.1和你的项目都定义了同名的自定义属性attr/size,Gradle在合并资源文件时无法确定使用哪一个版本,直接导致mergeDebugResources任务失败。

定位与修复步骤

  • 找到重复定义的位置

    1. 打开项目本地的res/values/values.xml,跳转到第14239行,找到<attr name="size" ... />的代码
    2. 第三方库的对应文件可在项目构建目录中查看,路径大致为build/intermediates/exploded-aar/com.github.skydoves/jetified-colorpicker-0.9.1/res/values/values.xml,第46行存在相同的<attr name="size" ... />定义
  • 两种修复方案任选其一
    方案一:重命名项目的自定义属性
    直接修改项目values.xml里的attr/size为唯一名称(比如custom_size),同时同步修改项目中所有引用该属性的地方(布局文件、样式文件、Java/Kotlin代码)。这种方式最安全,彻底避免冲突。

    方案二:强制指定优先使用的属性版本

    • 方式1:在Module级build.gradle中排除第三方库的冲突属性
      android {
          packagingOptions {
              resources {
                  // 排除第三方库中的attr/size定义,优先使用项目本地的
                  exclude 'res/values/values.xml:attr/size'
              }
          }
      }
      
    • 方式2:在项目的values.xml中覆盖第三方库的定义
      先在<resources>标签添加tools命名空间,再给冲突属性加上tools:override="true":
      <resources xmlns:tools="http://schemas.android.com/tools">
          <!-- 根据实际format调整,比如dimension、integer等 -->
          <attr name="size" format="dimension" tools:override="true" />
      </resources>
      
      注意:这种方式可能导致第三方库因属性定义被覆盖出现异常,修复后需全面测试。

后续预防建议

  • 自定义属性时添加项目专属前缀(比如项目缩写),例如app:myapp_size,降低和第三方库的命名冲突概率
  • 引入第三方库前,查看其官方文档或资源文件,提前规避同名属性定义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 19:02:43