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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:27:22