项目中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.1、play-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-base、play-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




