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

Gradle构建报错:项目':app'中com.android.support:support-annotations依赖冲突

关于Gradle构建中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,定位到对应的测试依赖后,要么:

    1. 升级/降级该测试依赖到和26.1.0兼容的版本;
    2. 排除该测试依赖自带的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,提问作者کوروش افشار

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:28:09