添加Firebase会导致混音版本警告可能导致运行时崩溃

时间:2018-04-10 12:54:47

标签: android firebase

空项目上,添加 firebase 后会导致以下错误

图片版本: -

mixed version can lead to runtime crashes

文字版: -

  

所有com.android.support库必须使用完全相同的版本   规范(混合版本可能导致运行时崩溃)。发现   版本27.1.1,25.2.0。例子包括   com.android.support:animated-vector-drawable:27.1.1和   com.android.support:support-media-compat:25.2.0

另一个错误:

  

警告:配置'编译'已经过时,已被取代   实施'和' api'。

是否有任何可能的解决方案可以删除这些警告?

我的项目build.gradle 是:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.1'


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:3.1.1'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

我的 app build.gradle 是:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.mad.android.firebasetestauth2"
        minSdkVersion 24
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.google.firebase:firebase-auth:11.6.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

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

1 个答案:

答案 0 :(得分:6)

发生错误是因为 google-services 正在实施一些未使用27.1.1版本的库。所以我们需要覆盖版本。

为了做到这一点,总是尝试在android studio的 终端 中运行:

./gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

这将显示一个依赖项列表,其中显示了它的版本号,如下所示: -

list of dependencies

在这里,我们需要找到那些尚未被覆盖的依赖项,其版本号如 25或26而不会覆盖到27

与上面的示例一样,我们有com.android.support:support-v4:25.2.0

现在我们只需要使用最新版本号将其添加到依赖项块中。

最后,依赖关系块如下所示:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support:support-v4:27.1.1'
    implementation 'com.android.support:support-media-compat:27.1.1'

    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.google.firebase:firebase-auth:12.0.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

我们在这里添加

implementation 'com.android.support:support-v4:27.1.1'
implementation 'com.android.support:support-media-compat:27.1.1'

修复

第二个错误
  

警告:配置'编译'已经过时,已被取代   实施'和' api'。

项目build.gradle 中,更新

classpath 'com.google.gms:google-services:3.1.1'

classpath 'com.google.gms:google-services:3.2.0'