You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动