Android: 由于 firebase/com.google.android.gms:play-services-auth 版本冲突,无法解析 GoogleSignInClient

Android: cannot resolve GoogleSignInClient due to firebase/com.google.android.gms:play-services-auth version clash

除了为我的案例解决问题(这已经是超级膨胀了)我通常也对如何调试这类东西感兴趣(这不是我第一次遇到这种问题并解决每次都很麻烦)

我的问题:

我希望我的用户能够在我的 android 应用程序中使用他们的 google 帐户登录并关注 this guide(最新和最好的)。

显然它需要我拥有:

compile 'com.google.android.gms:play-services-auth:11.8.0'

(...否则 Android 工作室找不到 GoogleSignInClient。)

苦难开始了...

一旦我重新同步 gradle 它就无法使用不同版本的

compile 'com.google.android.gms:play-services-auth:11.8.0'

compile 'com.google.firebase:firebase-analytics:9.0.0'
compile 'com.google.firebase:firebase-core:9.0.0'

(这两行是在AndroidStudio的'guidance'上加的,9.0.0版本是降级版(见后文))

首先 Android studio 抱怨 com.google.firebase:firebase-analytics,如果你调整它抱怨 com.google.firebase:firebase-core 的版本,如果你调整它就会停止抱怨但是我在 gradle build:

时收到这条好消息

Error:Execution failed for task ':myProject:processDebugGoogleServices'. Please fix the version conflict either by updating the version of the google-services plugin (information about the latest version is available at https://bintray.com/android/android-tools/com.google.gms.google-services/) or updating the version of com.google.android.gms to 9.0.0.

如果我这样做,将不再找到 GoogleSignInClient。

实际上我不使用 firebase(据我所知)所以禁用已经是一个值得回答这个问题的解决方案。

到目前为止禁用插件并在我的AndroidManifest.xml中设置它:

<meta-data android:name="firebase_analytics_collection_deactivated" android:value="true" />

没解决多少问题。

欢迎任何反馈...

S.

我的顶级gradle文件:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        mavenCentral()
        jcenter()
        maven {
            url "https://maven.java.net/content/groups/public/"
        }
        maven {
            url "https://maven.google.com"
        }
        google()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'com.google.gms:google-services:3.1.1'
    }
}
allprojects {
    repositories {
        mavenCentral()
        google()
    }
}

dependencies {
}

ext {
    compileSdkVersion = 25
    buildToolsVersion = '25.0.2'
}

我的项目特定文件:

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

android {
    compileSdkVersion 25
    buildToolsVersion '26.0.2'

    defaultConfig {
        applicationId "a.mystery"
        minSdkVersion 16
        targetSdkVersion 25
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    lintOptions {
        abortOnError false
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:25.4.0'
    compile 'com.android.support:support-v4:25.4.0'
    compile 'ch.acra:acra:4.9.2'
    compile 'com.google.android.gms:play-services-auth:11.8.0'
    compile 'com.loopj.android:android-async-http:1.4.9'
    compile 'com.koushikdutta.ion:ion:2.+'
    compile('com.googlecode.json-simple:json-simple:1.1.1') {
        exclude group: 'org.hamcrest', module: 'hamcrest-core'
    }
    compile 'com.google.firebase:firebase-analytics:9.0.0'
    compile 'com.google.firebase:firebase-core:9.0.0'
}

这显然是对我问题的回答:

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

应该低于

compile 'com.google.android.gms:play-services-auth:11.8.0'

我也注释掉了:

//compile 'com.google.firebase:firebase-analytics:9.0.0'
//compile 'com.google.firebase:firebase-core:9.0.0'

又一个依赖性问题以另一种不同的方式解决了...

(如果对这种东西的一般调试作为答案给出我同意,我真的很讨厌这种问题并且似乎没有解决这些问题的一般方法和我的build.gradle 文件一直乱丢是我的印象...)

您应该将此行添加到应用程序 build.gradle 文件的底部:

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

并将您的 firebase-core 依赖项更新到最新版本:

compile 'com.google.firebase:firebase-core:11.8.0'

我看到了对 firebase-analytics 的依赖。我认为不存在,因为它没有显示在 List of Available Firebase Features.