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

项目中Google Play服务库依赖版本冲突问题技术问询

解决Google Play服务依赖版本冲突问题

问题分析

你遇到的是典型的Google Play服务依赖版本冲突,核心原因是项目里不同Google Play服务库的版本不统一:

在项目'app'中,已解析的Google Play服务库依赖项依赖于另一个精确版本(例如"[15.0.1]"),但未解析到该版本。库的表现将未知。失败的依赖关系:com.google.android.gms:play-services-flags:15.0.1 -> com.google.android.gms:play-services-base@[15.0.1],但play-services-base版本为16.0.1。

具体来说,你引入的com.google.android.gms:play-services-auth:9.8.0是一个非常老旧的版本,它依赖的play-services-base版本是15.0.1;但你同时引入了play-services-location:16.0.1play-services-auth-base:16.1.0等高版本库,这些库依赖的play-services-base是16.x版本,两者版本不匹配就触发了冲突。

解决方案

解决这个问题的核心是统一所有Google Play服务和Firebase相关库的版本,具体操作如下:

  • 升级低版本依赖库:把旧版本的play-services-auth:9.8.0升级到和其他Google Play服务库一致的版本,比如和play-services-auth-baseplay-services-maps保持相同的16.1.0版本。
  • (可选)用版本变量统一管理:在build.gradle里定义版本变量,后续修改版本时只需改一处,避免再次出现版本不一致的问题。
  • 确保Google服务插件版本兼容:如果项目根目录build.gradle里的com.google.gms.google-services插件版本较旧,建议升级到和依赖版本匹配的稳定版。

修改后的build.gradle示例

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

// 定义版本变量,方便统一维护
def playServicesVersion = "16.1.0"
def firebaseVersion = "16.0.3"

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.example.android.studentattendance"
        minSdkVersion 22
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    
    // 统一版本的Google Play服务库
    implementation "com.google.android.gms:play-services-auth:$playServicesVersion"
    implementation "com.google.android.gms:play-services-location:$playServicesVersion"
    implementation "com.google.android.gms:play-services-auth-base:$playServicesVersion"
    implementation "com.google.android.gms:play-services-maps:$playServicesVersion"
    
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    
    // 统一版本的Firebase库
    implementation "com.google.firebase:firebase-auth:$firebaseVersion"
    implementation "com.google.firebase:firebase-core:$firebaseVersion"
    
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

额外提示

  • Google官方推荐Play服务和Firebase库使用相同的主版本号,这样能最大程度避免依赖冲突。
  • 修改完依赖后,点击Android Studio右上角的Sync Project with Gradle Files按钮同步项目,等待依赖下载完成即可。

内容的提问来源于stack exchange,提问作者CHANDER

火山引擎 最新活动