Android Studio集成Firestore排除模块解决依赖重复报错
根因说明
你之前的排除规则完全没生效,核心问题有两个:
- 拼写错误:把依赖名
guava错写为gauva,规则无法命中目标模块 - 语法错误:Gradle的
exclude方法中,module参数仅需传入模块名即可,你之前写的完整group:name:version格式不符合语法要求,匹配不到任何依赖
报错里提到的guava-jdk5:17.0是非常老的Guava分支,Firestore 20.0.0、旧版google-api-client都会间接引入这个模块,和新版Guava 30.x的类重复。
修复步骤
1. 修正依赖排除规则
替换原有的Firestore、google-api-client依赖配置为以下写法,精准排除冲突模块,不会影响其他第三方库:
implementation('com.google.firebase:firebase-firestore:20.0.0') { exclude module: 'gson' exclude module: 'guava-jdk5' } implementation('com.google.api-client:google-api-client-android:1.23.0') { exclude module: 'httpclient' exclude module: 'guava-jdk5' }
其余Firebase依赖不需要额外修改。
2. 验证本地fat jar是否存在内嵌冲突
你提到的本地deeparteffects-android-client-1.0.0-jar-with-dependencies.jar是打包了所有依赖的fat jar,Gradle的exclude规则对这类本地文件引入的内嵌依赖无效,可以通过以下方式验证:
在终端进入项目libs目录,执行命令:
jar tf deeparteffects-android-client-1.0.0-jar-with-dependencies.jar | grep "com/google/common"
如果执行结果输出大量com/google/common/开头的类路径,说明这个jar本身内嵌了Guava(很可能是旧版guava-jdk5),这种情况你需要替换为该库不带依赖的普通jar包,单独声明它的依赖项,才能正常处理依赖冲突。
3. 兜底冲突解决(可选)
如果修正排除规则后仍有残留冲突,可以在app模块build.gradle的android配置块同级,添加全局冲突解决策略,强制统一Guava版本,所有Firebase 20.0.0系列SDK均兼容Guava 30.1.1-android版本,不会出现运行时异常:
configurations.all { resolutionStrategy { force 'com.google.guava:guava:30.1.1-android' } exclude module: 'guava-jdk5' }
内容的提问来源于stack exchange,提问作者it75
相关产品推荐
相关产品推荐

