Android集成Firebase+Crashlytics时出现Duplicate class重复类编译错误
问题根因
该报错由Google Play服务组件版本不匹配导致:你引入的Firebase BOM 29.0.0会拉取高版本的play-services-basement:17.0.0,但项目内的其他第三方依赖(如Facebook登录、Yoti SDK、Braintree支付SDK等)传递依赖了低版本的play-services-base:15.0.1,两个版本的组件内存在重复的类定义,因此触发编译冲突。
解决步骤
- 优先使用全局版本强制对齐方案,在应用级build.gradle的
dependencies代码块上方添加如下配置,统一所有Play服务组件的版本:configurations.all { resolutionStrategy { // 强制所有Play服务组件使用兼容的同版本实现 force "com.google.android.gms:play-services-base:17.0.0" force "com.google.android.gms:play-services-basement:17.0.0" } } - 若需要定位具体引入旧版Play服务的第三方依赖,可以在Android Studio终端执行如下命令打印依赖树排查:
./gradlew app:dependencies | grep play-services-base - 排查到具体依赖后,也可以对单个依赖做组排除,示例如下(以Facebook登录依赖为例):
implementation ('com.facebook.android:facebook-login:9.1.1') { exclude group: 'com.google.android.gms' } - 配置完成后清理缓存,依次执行
Build -> Clean Project、Build -> Rebuild Project即可完成编译。
内容的提问来源于stack exchange,提问作者Alex Petev
相关产品推荐
相关产品推荐

