编译Android项目时Google Play服务依赖版本冲突问题求助
这个问题是典型的Firebase/FirebaseUI与Google Play服务(GMS)依赖版本不兼容导致的版本冲突——你当前混用了不同版本的Firebase核心库、FirebaseUI和GMS库,导致依赖解析时出现版本不匹配的情况。下面给你两种可行的解决方案:
方案一:降级Firebase库适配现有FirebaseUI版本
你当前使用的com.firebaseui:firebase-ui:3.3.1是3.x版本,这个版本要求所有Firebase核心库和GMS库统一使用15.x系列版本,但你引入了16.x的Firebase库(比如firebase-database:16.0.6、firebase-analytics:16.3.0),这直接触发了冲突。按以下步骤修改:
统一Firebase核心库版本到15.0.0
修改app/build.gradle中的依赖,把所有Firebase库替换为15.0.0版本:// 替换前 implementation 'com.google.firebase:firebase-database:16.0.6' implementation 'com.google.firebase:firebase-analytics:16.3.0' // 替换后 implementation 'com.google.firebase:firebase-database:15.0.0' implementation 'com.google.firebase:firebase-analytics:15.0.0'移除重复的Support库依赖
你的依赖中重复引入了cardview-v7,删除旧版本的那一行:// 删除这一行 implementation 'com.android.support:cardview-v7:23.3.0'添加GMS/Firebase版本统一规则
在现有的configurations.all块中,加入GMS和Firebase的版本强制统一:configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested // 统一Support库版本 if (requested.group == 'com.android.support') { if (!requested.name.startsWith("multidex")) { details.useVersion '27.1.1' } } // 统一GMS库版本为15.0.1 if (requested.group == 'com.google.android.gms') { details.useVersion '15.0.1' } // 统一Firebase库版本为15.0.0 if (requested.group == 'com.google.firebase') { details.useVersion '15.0.0' } } }
方案二:升级FirebaseUI适配新版本Firebase库
如果你想保留16.x的Firebase库,需要将FirebaseUI升级到兼容的版本(比如4.3.1,该版本适配Firebase 16.x系列),步骤如下:
升级FirebaseUI版本
修改app/build.gradle中的FirebaseUI依赖:// 替换前 implementation 'com.firebaseui:firebase-ui:3.3.1' // 替换后 implementation 'com.firebaseui:firebase-ui:4.3.1'(注:FirebaseUI 4.x要求
compileSdkVersion至少为28,如果你的项目允许,可以将compileSdkVersion和targetSdkVersion从27改为28)统一所有Firebase库到16.x的兼容版本
确保所有Firebase核心库版本一致,比如:implementation 'com.google.firebase:firebase-database:16.0.6' implementation 'com.google.firebase:firebase-analytics:16.3.0'更新GMS版本统一规则
在configurations.all块中,将GMS版本统一为对应16.x的版本:if (requested.group == 'com.google.android.gms') { details.useVersion '16.0.1' }
最后验证步骤
修改完成后,执行以下操作确保编译正常:
- 点击Android Studio的
Sync Now同步Gradle配置 - 清理项目缓存:在终端执行
./gradlew clean - 重新编译项目:
./gradlew assembleDebug
如果还是有问题,可以执行提示的命令查看详细依赖路径:./gradlew --info :app:assembleDebug,定位剩余的冲突依赖。
内容的提问来源于stack exchange,提问作者warlordofhogwarts

