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

升级AndroidX与Firebase后出现Dagger及javax.inject类重复冲突

解决Dagger与javax.inject依赖冲突问题

这种依赖冲突在升级AndroidX和第三方库时特别常见,我来帮你一步步排查和修复:

问题本质

你没直接使用Dagger,但项目里的第三方库(比如com.google.android.gms:play-services-cast-framework:17.1.0)引入了Dagger 2.22,同时还有另一个未找到的依赖来源引入了旧版Dagger 1.2.2;另外javax.inject也存在重复依赖,导致checkDebugDuplicateClasses步骤检测到重复类,构建失败。

具体解决方案

1. 精准定位Dagger 1.2.2的来源

先执行更细致的依赖树命令,找出到底是哪个库带了旧版Dagger:

./gradlew app:dependencies --configuration debugCompileClasspath | grep -A 5 -B 5 dagger-1.2.2

如果上述命令没结果,就导出完整依赖树到文件搜索:

./gradlew app:dependencies > dependencies.txt

打开dependencies.txt,直接搜索dagger-1.2.2,就能找到对应的依赖库。

2. 排除冲突的依赖

找到引入Dagger 1.2.2的库后,在Module级别的build.gradle中给该库添加排除规则,同时统一处理javax.inject的重复:

// 假设是第三方库xxx:yyy:zzz引入了Dagger 1.2.2
implementation('xxx:yyy:zzz') {
    // 排除旧版Dagger
    exclude group: 'com.squareup.dagger', module: 'dagger'
    // 重复的javax.inject也一并排除
    exclude group: 'javax.inject', module: 'javax.inject'
}

// 给play-services-cast-framework也加上javax.inject排除
implementation('com.google.android.gms:play-services-cast-framework:17.1.0') {
    exclude group: 'javax.inject', module: 'javax.inject'
}

3. 强制统一依赖版本(可选但推荐)

为了彻底杜绝这类冲突,可以在Project级别的build.gradle的allprojects块里强制指定Dagger和javax.inject的版本:

allprojects {
    repositories {
        // 你的仓库配置(比如google()、mavenCentral()等)
    }
    configurations.all {
        resolutionStrategy {
            // 强制所有依赖使用Dagger 2.22
            force 'com.google.dagger:dagger:2.22'
            // 强制所有依赖使用统一的javax.inject版本
            force 'javax.inject:javax.inject:1'
        }
    }
}

4. 验证修复效果

先检查依赖是否已经统一:

./gradlew app:dependencies | grep dagger
./gradlew app:dependencies | grep javax.inject

确认所有Dagger都是2.22版本、javax.inject都是1版本后,重新构建项目:

./gradlew app:clean app:assembleDebug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:02:53