混合版本会导致Firebase中的运行时崩溃吗?

时间:2018-08-04 11:39:03

标签: android firebase android-gradle dependencies firebase-cloud-messaging

以下是我的gradle文件:

apply plugin: 'com.android.application'
apply plugin: 'realm-android'
apply plugin: 'io.fabric'


android {
    compileSdkVersion 27
    buildToolsVersion "27.0.3"
    defaultConfig {
        applicationId "???"
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 4
        versionName "1.02"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {

            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    realm {

        syncEnabled = true
    }
}

dependencies {

    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation project(':EBS')
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support:design:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    implementation 'com.android.support:gridlayout-v7:27.1.1'
    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'
    implementation 'com.afollestad.material-dialogs:commons:0.9.6.0'
    implementation 'com.android.support:cardview-v7:27.1.1'
    implementation 'com.android.support:recyclerview-v7:27.1.1'
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
    implementation 'com.daimajia.swipelayout:library:1.2.0@aar'

    implementation 'com.google.firebase:firebase-messaging:17.1.0'
    implementation 'com.google.firebase:firebase-core:16.0.1'

    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.4'
    implementation 'com.github.amlcurran.showcaseview:library:5.4.3'
}

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

//顶层构建文件,您可以在其中添加所有子项目/模块共有的配置选项。

buildscript {

    repositories {
        google()
        jcenter()
        maven {

            url 'https://maven.fabric.io/public'

        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.3'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
        classpath "io.realm:realm-gradle-plugin:5.4.1"
        classpath 'com.google.gms:google-services:4.0.2'
        classpath 'io.fabric.tools:gradle:1.25.4'
        classpath 'com.google.android.gms:strict-version-matcher-plugin:1.0.3'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {

            url 'https://jitpack.io'
        }
    }
}

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

在这里,我在项目中都添加了Firebase Core和Firebase消息传递,但是我面对

  

“所有gms / firebase库必须使用完全相同的版本   规范(混合版本可能导致运行时崩溃)。找到了   版本17.1.0、16.2.0、16.1.1、16.0.1、16.0.0、15.0.1。例子   包括com.google.firebase:firebase-messaging:17.1.0和   com.google.firebase:firebase-iid:16.2.0以下...(⌘F1)       有一些库,工具或库的组合不兼容或可能导致错误。一种这样的不兼容   正在使用一个版本的Android支持库进行编译   不是最新版本(或者特别是低于您的版本)   targetSdkVersion。)”

能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

我也面临着同样的问题,这是我如何解决该问题:

由于gradle发出警告混合版本可能导致运行时崩溃,并且gradle会给出诸如以下示例:

  

所有gms / firebase库必须使用完全相同的版本   规范(混合版本可能导致运行时崩溃)。找到了   版本17.1.0、16.2.0、16.1.1、16.0.1、16.0.0、15.0.1。例子   包括com.google.firebase:firebase-messaging:17.1.0和   com.google.firebase:firebase-iid:16.2.0以下...(⌘F1)有一些   库或工具和库的组合是   不兼容,否则可能导致错误。一种这样的不兼容是   使用不支持的Android支持库版本进行编译   最新版本(或特别是低于您的版本   targetSdkVersion。)

如您在上述声明中所见

  

示例包括com.google.firebase:firebase-messaging:17.1.0和   com.google.firebase:firebase-iid:16.2.0以下...

因此,只需添加任何会造成版本冲突并由gradle提及的依赖关系

implementation com.google.firebase:firebase-messaging:17.1.0
implementation  com.google.firebase:firebase-iid:16.2.0

添加依赖关系后,gradle可能会包含更多依赖关系,因此也应添加这些依赖关系。

注意:Gradle显示此警告,因为您使用的是第三方库,而其他第三方库

答案 1 :(得分:0)

在您的build.gradle file中,在您的回购旁边:

maven { url 'https://jitpack.io' }

添加:

maven { url "https://maven.google.com" }

根据official documentation,没有:

implementation 'com.google.firebase:firebase-iid:16.2.0'