Android Studio集成Firebase时Gradle依赖版本冲突问题
解决Android Support库版本冲突问题
嗨,这问题我太熟了!你碰到的是Android开发里超常见的依赖版本冲突——你的项目明确用了27.1.0的Support库,但某个依赖(十有八九是Firebase相关的库)偷偷引入了26.1.0的版本,Gradle出于兼容性要求,会强制你把所有Support库统一成同一个版本。
给你两个靠谱的解决办法:
方法一:强制所有Support库使用统一版本(最省心)
在你的模块级build.gradle文件里(就是你贴的那个带apply plugin: 'com.android.application'的文件),添加一段配置来强制所有Support库都用27.1.0版本:
android { compileSdkVersion 27 defaultConfig { // 你的现有配置内容... } // 其他android相关配置... } // 新增这段配置,放在android块之后、dependencies块之前 configurations.all { resolutionStrategy.eachDependency { details -> if (details.requested.group == 'com.android.support' && !details.requested.name.contains('multidex')) { details.useVersion '27.1.0' } } } dependencies { // 你的现有依赖列表... androidTestImplementation 'com.android.support.test:runner:1.0.1' // 记得确保这里所有com.android.support开头的依赖都是27.1.0版本 }
这段代码会告诉Gradle:不管哪个依赖引入了com.android.support库,都统一用27.1.0版本,直接覆盖冲突的旧版本。
方法二:排查并排除冲突的依赖(更精准)
如果你想搞清楚到底是哪个依赖带进来了26.1.0的Support库,可以在Android Studio的Terminal里运行以下命令:
# Mac/Linux系统执行 ./gradlew app:dependencies # Windows系统执行 gradlew app:dependencies
运行后会输出完整的依赖树,搜索com.android.support找到标注为26.1.0的条目,然后在你的dependencies里给对应的依赖加上exclude规则,比如如果是Firebase Auth库导致的冲突:
implementation('com.google.firebase:firebase-auth:x.x.x') { exclude group: 'com.android.support' }
这样就能阻止这个依赖引入旧版本的Support库,再确保你自己声明的Support库都是27.1.0版本就可以了。
最后别忘了点击Android Studio工具栏里的Sync Project with Gradle Files按钮,同步一下配置,问题应该就能解决啦!
内容的提问来源于stack exchange,提问作者Sébastien REMY




