已确认Firebase库版本一致仍报错:GMS/Firebase库需使用完全相同版本
我太懂这种明明自己手动统一了Firebase/GMS版本,却还是被版本冲突报错怼的憋屈感了!问题根源不在你显式配置的依赖上,而是隐式依赖——有些第三方库、Android官方插件会偷偷引入不同版本的Google Play Services(GMS)或Firebase库,你自己的build.gradle里没写,但Gradle会自动拉取这些依赖,最终导致版本混用。
下面是一步步解决的方案:
1. 找出所有冲突的依赖来源
首先得搞清楚到底是哪个库在偷偷引入旧版本的GMS/Firebase。在终端里执行Gradle命令:
- macOS/Linux:
./gradlew app:dependencies - Windows:
gradlew.bat app:dependencies
这个命令会输出你的项目所有依赖树,搜索com.google.android.gms和com.google.firebase关键词,就能看到哪些依赖带进来了12.0.1版本的库(比如你提到的play-services-auth:12.0)。
2. 强制统一所有GMS/Firebase版本
在你的Module级别build.gradle文件里,添加一个configurations块,强制所有相关库使用你指定的版本(比如你想用的15.0.0):
configurations.all { resolutionStrategy { // 强制冲突的具体库版本统一 force 'com.google.android.gms:play-services-auth:15.0.0' force 'com.google.android.gms:play-services-ads-identifier:15.0.0' // 更通用的写法:强制所有GMS基础库和Firebase核心库版本统一 force 'com.google.android.gms:play-services-base:15.0.0' force 'com.google.firebase:firebase-core:15.0.0' // 如果你用到了其他Firebase服务(比如auth、database等),也可以添加对应的force规则 } }
这个配置会让Gradle忽略所有隐式依赖的版本,强制使用你指定的版本,彻底避免版本混用。
3. 确保Google服务插件版本兼容
打开项目根目录的build.gradle文件,检查Google服务插件的版本是否和你的GMS/Firebase库版本兼容:
buildscript { dependencies { // 15.x版本的GMS/Firebase库,对应4.2.0左右的插件版本(可根据实际情况调整) classpath 'com.google.gms:google-services:4.2.0' } }
插件版本太旧也可能导致版本检测逻辑出错,引发不必要的报错。
4. 清理缓存并重建项目
最后执行清理和重建命令,确保旧的依赖缓存被清除:
- macOS/Linux:
./gradlew clean && ./gradlew assembleDebug - Windows:
gradlew.bat clean && gradlew.bat assembleDebug
如果上面的步骤还没解决,你可以根据依赖树的结果,直接排除第三方库带进来的旧版本依赖。比如某个第三方库引入了旧版play-services-auth,你可以这样写:
implementation('some-third-party-library:1.0.0') { exclude group: 'com.google.android.gms', module: 'play-services-auth' }
然后自己显式添加正确版本的play-services-auth依赖即可。
内容的提问来源于stack exchange,提问作者Subby

