原可正常构建的Android项目构建失败,报attr/tint资源重复错误
解决AppCompat-v7中
attr/tint重复定义的构建错误 这个问题我之前踩过坑!本质是不同依赖库重复定义了attr/tint资源属性,尤其是在使用较旧的AppCompat版本(比如你用的27.1.0)时,很容易和其他第三方库或者同系列的支持库产生冲突。下面给你几个靠谱的解决办法:
1. 优先升级到AndroidX(最推荐)
旧的Support Library已经停止维护了,Google早就转向AndroidX了,升级后不仅能解决这个资源冲突,还能避免很多其他兼容性问题:
- 打开项目根目录的
gradle.properties,添加以下配置:android.useAndroidX=true android.enableJetifier=true - 把
build.gradle(Module级)里的旧支持库依赖替换成AndroidX版本:// 替换原来的 implementation 'com.android.support:appcompat-v7:27.1.0' implementation 'androidx.appcompat:appcompat:1.6.1' - 同步项目后,清理并重新构建:执行
./gradlew clean build命令。
2. 升级到更高版本的Support Library(如果暂时不想迁AndroidX)
如果还想继续用Support Library,把AppCompat版本升级到同系列的最高稳定版(比如28.0.0,这是Support Library的最后一个版本):
implementation 'com.android.support:appcompat-v7:28.0.0'
同步后清理缓存再构建,通常能解决重复定义的问题,因为高版本已经修复了这类资源冲突。
3. 排查并排除冲突的依赖
如果升级后还是有问题,先找出到底是哪个库在重复定义tint:
- 执行命令查看完整依赖树:
./gradlew app:dependencies - 找到同时引入了AppCompat或者包含
tint属性的第三方库,在依赖声明里排除重复的部分。比如某个第三方库自带了AppCompat,就这么写:implementation('com.example:some-third-party-lib:1.0.0') { exclude group: 'com.android.support', module: 'appcompat-v7' }
4. 清理Gradle缓存
有时候缓存文件损坏也会导致奇怪的资源冲突,手动清理试试:
- 执行命令清理缓存:
./gradlew clean ./gradlew build --refresh-dependencies - 或者直接删除项目根目录下的
.gradle/caches文件夹(就是你报错里的那个路径),然后重新同步项目。
内容的提问来源于stack exchange,提问作者Francis Bacon
相关产品推荐
相关产品推荐

