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

升级Android Studio并切换SDK至27.1.1后编译报attr/tintMode重复错误

解决appcompat-v7-27.1.1编译报错:duplicate value for resource 'attr/tintMode'

哈哈,这个坑我踩过!升级Android Studio并切换到SDK 27.1.1后出现的tintMode属性重复错误,本质就是同一个属性被定义了两次——要么是你自己的代码里手动定义了,要么是第三方依赖库和appcompat的内置属性撞车了。给你几个靠谱的解决思路:

1. 检查并移除自定义的重复属性

首先打开你项目里的res/values/attrs.xml,搜索tintMode。如果你看到类似这样的自定义属性:

<attr name="tintMode" format="enum">
    <enum name="src_over" value="3"/>
    <!-- 其他枚举值 -->
</attr>

直接删掉这段代码!因为appcompat-v7-27.1.1已经内置了这个属性,不需要你再重复定义,留着只会冲突。

2. 排查并修复第三方依赖冲突

如果不是你自己定义的,那大概率是某个第三方依赖库也定义了tintMode,或者依赖了不同版本的support库导致的。

  • 第一步:查看依赖树
    执行这个命令列出所有依赖的详细信息,找出可能冲突的库:
./gradlew dependencies

仔细看输出里的com.android.support相关依赖,有没有不同版本的appcompat,或者某个第三方库自带了同名属性。

  • 第二步:排除冲突依赖
    比如发现com.xxx:old-ui-lib:2.0这个库依赖了旧版的appcompat,就在build.gradle里给它排除掉:
dependencies {
    implementation('com.xxx:old-ui-lib:2.0') {
        exclude group: 'com.android.support', module: 'appcompat-v7'
    }
}
  • 第三步:强制统一support库版本
    为了从根源避免这类版本冲突,可以在项目根目录的build.gradle里添加强制统一版本的配置:
allprojects {
    repositories {
        // 你的仓库配置(比如google()、jcenter())
    }
    configurations.all {
        resolutionStrategy {
            force 'com.android.support:appcompat-v7:27.1.1'
            force 'com.android.support:support-v4:27.1.1'
            // 其他用到的support库也统一成27.1.1版本
        }
    }
}

3. 清理Gradle缓存后重新编译

有时候缓存文件损坏也会导致奇怪的冲突,执行以下命令彻底清理缓存:

./gradlew clean
./gradlew build --refresh-dependencies

然后重新编译项目,大概率能解决问题。


内容的提问来源于stack exchange,提问作者Dale.Che

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:33:28