Android依赖版本冲突求助:Google服务相关依赖版本不兼容
解决Google Services版本冲突的简便方案
看了你的Gradle配置和错误日志,问题根源很明确:你项目里的Google Play Services、Firebase依赖版本完全不一致,而且没有指定google-services插件的版本,这直接触发了版本冲突报错。下面是一步到位的修复方法:
步骤1:统一所有Google相关依赖的版本
Google要求com.google.android.gms(Play Services)和com.google.firebase(Firebase)的版本必须完全一致,否则必然冲突。你的配置里混了9.6.1、10.2.1、11.0.4三个版本,必须全部改成同一个版本。这里推荐用你已经用的Firebase版本11.0.4,因为Firebase和Play Services版本必须对齐。
同时要清理重复依赖:你重复添加了play-services(这是一个大合集,不建议用,应该只加需要的模块)和multidex,把这些重复项删掉。
步骤2:指定google-services插件的版本
你的buildscript里没有声明google-services插件的版本,Gradle会默认拉取旧版本,而旧版本不兼容高版本的Play Services/Firebase。需要在buildscript的dependencies里添加指定版本的插件(和你的依赖版本匹配,11.0.4对应的插件版本是3.1.2,这是兼容的稳定版)。
修改后的完整Gradle配置
/**********My Gradle ************************/ buildscript { repositories { maven { url 'https://maven.fabric.io/public' } // 必须添加Google仓库,否则拉不到google-services插件 google() } dependencies { classpath 'io.fabric.tools:gradle:1.+' // 添加指定版本的google-services插件 classpath 'com.google.gms:google-services:3.1.2' } } apply plugin: 'com.android.application' apply plugin: 'io.fabric' repositories { maven { url 'https://maven.fabric.io/public' } google() } android { compileSdkVersion 26 buildToolsVersion '27.0.3' defaultConfig { applicationId "com.example.company" minSdkVersion 15 versionCode 8 //Update on store 25th may 18 versionName "2.1" targetSdkVersion 26 multiDexEnabled true } dexOptions { javaMaxHeapSize "4g" } buildTypes { release { debuggable false minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } useLibrary 'org.apache.http.legacy' } dependencies { implementation files('libs/jxl-2.6.10.jar') implementation files('libs/ksoap2-android-assembly-3.4.0-jar-with-dependencies.jar') implementation 'com.android.support:design:24.2.1' implementation 'com.android.support:appcompat-v7:26.0.0' implementation 'com.android.support:cardview-v7:26.0.0' implementation 'com.android.support:support-v4:26.0.0' implementation 'com.github.bumptech.glide:glide:3.6.0' implementation 'com.android.support:multidex:1.0.0' // 统一所有Play Services版本为11.0.4,和Firebase版本对齐 implementation 'com.google.android.gms:play-services-location:11.0.4' implementation 'com.google.android.gms:play-services-maps:11.0.4' implementation 'com.google.android.gms:play-services-identity:11.0.4' implementation 'com.google.android.gms:play-services-plus:11.0.4' // 删掉重复的play-services大合集,只保留需要的模块 implementation 'com.github.boxme:squarecamera:1.1.0' implementation 'com.squareup.picasso:picasso:2.5.2' implementation 'com.android.support.constraint:constraint-layout:1.0.0-alpha9' implementation 'com.google.firebase:firebase-messaging:11.0.4' implementation 'id.zelory:compressor:2.1.0' implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' implementation('com.crashlytics.sdk.android:crashlytics:2.8.0@aar') { transitive = true; } } apply plugin: 'com.google.gms.google-services'
额外注意点
- 不要使用
com.google.android.gms:play-services这个依赖,它包含了所有Play Services模块,会导致APK体积过大,而且容易引发版本冲突,只添加你实际需要的模块(比如location、maps等)即可。 - 做完修改后,执行
File -> Sync Project with Gradle Files,如果还是有问题,可以尝试Build -> Clean Project再重新构建。 - 你之前参考的《Mixing dependencies versions》帖子核心也是版本统一,但可能你没有彻底清理所有不一致的版本,或者没指定
google-services插件版本,导致问题没解决。
内容的提问来源于stack exchange,提问作者Yatin
相关产品推荐
相关产品推荐

