Play Services Maps与Firebase依赖冲突问题求助
嘿,看来你在给现有项目加Firebase时碰到了依赖版本冲突的坑,我帮你拆解一下问题,一步步来修复:
1. 先清掉重复冗余的依赖
我看你app模块的build.gradle里重复引入了好几次appcompat-v7和design,这些重复依赖不仅没用,还会增加编译的复杂度,先删掉多余的:
- 删掉重复的
implementation 'com.android.support:appcompat-v7:26.1.0' - 删掉重复的
implementation 'com.android.support:design:26.1.0'
2. 把全量Play Services包换成单独的Maps组件
你现在用的com.google.android.gms:play-services:15.0.1是全量包,包含了所有Play Services的组件,不仅安装包会变大,还特别容易和Firebase的依赖版本打架。咱们只留需要的play-services-maps就好:
// 替换全量包为单独的Maps组件,减少冲突概率 implementation 'com.google.android.gms:play-services-maps:15.0.1'
3. 对齐Firebase和相关组件的版本
Firebase从16.x版本开始,部分组件的版本号和Play Services不再完全一致,但得保证相互兼容,尤其是FirebaseUI Auth的版本要和Firebase Auth匹配:
- FirebaseUI Auth 3.3.0 要求对应的Firebase Auth版本是16.0.0,你当前用的
firebase-auth:16.0.1得降到16.0.0(或者升级FirebaseUI,但考虑到你的compileSdk是26,保持3.3.0更稳妥) - 确保
firebase-core和其他Firebase组件版本协调
4. 修复后的完整app模块build.gradle
修改后的依赖部分长这样,你直接替换就行:
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.1.0' // 只引入需要的Maps组件,替换全量Play Services包 implementation 'com.google.android.gms:play-services-maps:15.0.1' implementation 'com.android.support.constraint:constraint-layout:1.1.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation 'com.android.support:design:26.1.0' implementation 'com.android.support:support-v4:26.1.0' implementation 'com.android.support:cardview-v7:26.1.0' implementation 'com.android.support:recyclerview-v7:26.1.0' // 建议把gson的版本换成具体号,比如2.8.9,避免自动升级带来的问题 implementation 'com.google.code.gson:gson:2.2.+' implementation 'com.google.firebase:firebase-core:16.0.0' // 对齐FirebaseUI Auth的版本要求,调整为16.0.0 implementation 'com.google.firebase:firebase-auth:16.0.0' implementation 'com.firebaseui:firebase-ui-auth:3.3.0' }
5. 项目级build.gradle的小提示
你项目级gradle里的com.google.gms:google-services:4.0.1是兼容Firebase 16.x版本的,完全没问题。如果你的Android Studio版本支持,也可以把gradle插件升级到3.2.1,不过当前版本也能正常工作。
最后一步验证
改完之后,点击Android Studio顶部的File -> Sync Project with Gradle Files同步一下,然后尝试编译。如果还是有冲突,可以打开终端运行./gradlew app:dependencies(Windows用gradlew.bat app:dependencies),查看完整的依赖树,找出具体冲突的组件版本,再针对性调整就行。
内容的提问来源于stack exchange,提问作者Tenzin Choklang

