Gradle构建报错:项目':app'中com.android.support:support-annotations依赖冲突
com.android.support:support-annotations版本冲突的解析 这个错误本质上是Android多模块依赖版本一致性冲突,核心问题是:你的主应用模块(:app)已经明确依赖了com.android.support:support-annotations:26.1.0,但你的测试模块(通常是androidTest或test源码集对应的依赖)间接或直接引入了另一个版本的support-annotations,Gradle在合并所有模块的依赖时,发现同一依赖存在两个不同版本,无法自动确定使用哪一个,因此抛出冲突错误。
为什么会出现这个问题?
Android的Support库(现已被AndroidX替代,但仍有大量老项目在使用)有一个核心要求:同属com.android.support组的所有依赖,版本必须保持完全一致。这是因为Support库的各个组件是高度耦合的,版本不匹配不仅会导致编译失败,还可能引发运行时的兼容性问题(比如资源找不到、类加载异常等)。
你的测试模块大概率是通过某个测试依赖(比如Espresso、Android Test Rules等)间接引入了其他版本的support-annotations,和主模块的26.1.0版本产生了冲突。
解决方法
这里给你几个实用的解决思路:
强制统一所有模块的依赖版本
在app模块的build.gradle文件中添加如下配置,强制Gradle对所有模块的support-annotations都使用26.1.0版本:configurations.all { resolutionStrategy.force 'com.android.support:support-annotations:26.1.0' }也可以把这段配置放到项目根目录的
build.gradle的allprojects块中,对整个项目生效。排查并调整测试模块的依赖
先执行依赖树分析命令,找出是哪个测试依赖引入了不一致的版本:# macOS/Linux ./gradlew app:dependencies # Windows gradlew.bat app:dependencies在输出结果里找到
androidTestImplementation或testImplementation分支下的support-annotations,定位到对应的测试依赖后,要么:- 升级/降级该测试依赖到和26.1.0兼容的版本;
- 排除该测试依赖自带的
support-annotations,让它复用主模块的版本:androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.2') { exclude group: 'com.android.support', module: 'support-annotations' }
迁移到AndroidX(长期解决方案)
如果你的项目还在使用旧的Support库,建议直接迁移到AndroidX。AndroidX对依赖版本的管理更智能,会自动统一同组依赖的版本,从根源上减少这类冲突问题。你可以通过Android Studio的Refactor > Migrate to AndroidX向导完成迁移。
内容的提问来源于stack exchange,提问作者کوروش افشار

