Firebase集成报错:所有GMS/Firebase库需使用相同版本问题排查
嘿,这个坑我踩过好多次了!Firebase和GMS(Google Mobile Services)的库对版本一致性要求特别严格,只要有一个依赖间接引入了不同版本的库,Gradle就会抛出你遇到的这个错误。
问题根源
你项目里的依赖(包括直接引入的和间接依赖的)同时包含了15.1.0、15.0.2、15.0.1、15.0.0这几个版本的GMS/Firebase库,而Google要求所有相关库必须使用完全相同的版本。
解决方案步骤
1. 统一所有Firebase/GMS库的版本
首先,选一个兼容你compileSdkVersion 27的版本(15.x系列是合适的,比如你检测到的最高版本15.1.0),把所有直接引入的Firebase/GMS依赖都改成这个版本。比如你的dependencies块可以调整成这样:
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) // 示例:把你用到的Firebase/GMS依赖都统一为15.1.0 implementation 'com.google.firebase:firebase-core:15.1.0' implementation 'com.google.firebase:firebase-auth:15.1.0' implementation 'com.google.android.gms:play-services-maps:15.1.0' // 其他你用到的Firebase/GMS依赖都照此修改 }
2. 强制处理间接依赖的版本冲突
有些时候,第三方库会间接引入不同版本的GMS/Firebase库,这时候需要强制Gradle使用你指定的版本。在dependencies块里添加以下配置:
dependencies { // 上面的依赖配置... configurations.all { resolutionStrategy { // 把检测到的所有版本不一致的库都强制为15.1.0 force 'com.google.firebase:firebase-core:15.1.0' force 'com.google.android.gms:play-services-base:15.1.0' force 'com.google.android.gms:play-services-basement:15.1.0' // 根据你报错里提到的版本,把对应的库都加上force规则 } } }
3. 确保Google Services插件配置正确
在项目根目录的build.gradle里,确认已经添加了正确版本的Google Services插件(对应15.x系列Firebase的插件版本是4.x):
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.2.1' // 兼容compileSdk27的Gradle版本 classpath 'com.google.gms:google-services:4.2.0' } }
同时,在你的app模块build.gradle的末尾,一定要添加插件引用:
apply plugin: 'com.google.gms.google-services'
4. 排查依赖树(可选但推荐)
如果你不确定哪些依赖引入了冲突版本,可以在终端运行这个命令查看完整的依赖树:
# Mac/Linux ./gradlew app:dependencies # Windows gradlew app:dependencies
搜索带有firebase或play-services的条目,找到版本不一致的依赖,然后针对性地添加force规则或者调整直接依赖的版本。
最后提醒
只要所有Firebase/GMS相关的库(不管是直接还是间接引入的)都使用同一个版本,这个报错就会消失啦!
内容的提问来源于stack exchange,提问作者Amir

