簡體   English   中英

混合依賴版本

[英]Mixing dependencies versions

我開始學習開發android應用程序。
我正在遵循一個Firebase教程,並且我的build.gradle文件出現一些錯誤。

有人可以幫幫我嗎?

我的build.gradle文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "br.com.brunots.firebasetests"
        minSdkVersion 16
        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 ''
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.google.firebase:firebase-core:11.8.0'
    testImplementation 'junit:junit:4.1com.android.support:appcompat-v7:27.1.02'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    compile 'com.android.support:design:27.1.0'
    compile 'com.firebaseui:firebase-ui:0.6.0'
}


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

這些是錯誤:

  • 所有gms / firebase庫必須使用完全相同的版本規范(混合版本可能導致運行時崩潰)。 找到版本9.6.0、11.8.0。 示例包括com.google.android.gms:play-services-auth:9.6.0com.google.android.gms:play-services-basement:11.8.0
  • 所有com.android.support庫都必須使用完全相同的版本規范(混合版本可能導致運行時崩潰)。 找到版本27.1.0,23.4.0。 示例包括com.android.support:animated-vector-drawable:27.1.0com.android.support:cardview-v7:23.4.0

我不知道舊版本在哪里聲明。

在class.gradle(project)中使用classpath 'com.google.gms:google-services:3.2.0' // google-services plugin ,然后在build.gradle(app)中添加以下firebase依賴項:

dependencies {
  compile 'com.google.firebase:firebase-core:11.8.0'
  compile 'com.firebaseui:firebase-ui:11.8.0'}

因為在使用Firebase時,其所有依賴項版本必須相同。 對於第二個錯誤,請分享您要實現的目標,這是由於版本差異所致。

這是因為您使用的是Firebase-ui版本0.6.0,即隱式使用了Firebase和Google Play服務版本9.6.0(有關更多信息,請訪問https://github.com/firebase/FirebaseUI-Android/releases/tag /0.6.0 )。 因此,您不能使用以下內容:

implementation 'com.google.firebase:firebase-core:11.8.0'
compile 'com.firebaseui:firebase-ui:0.6.0'

您需要使用使用firebase 11.8.0的firebase-ui版本3.2.2(有關更多信息, 參見https://github.com/firebase/FirebaseUI-Android ),如下所示:

implementation 'com.google.firebase:firebase-core:11.8.0'
implementation 'com.firebaseui:firebase-ui:3.2.2'

並且您還需要將支持庫版本27.0.2用於firebase-ui 3.2.2(請參見https://github.com/firebase/FirebaseUI-Android/blob/master/constants.gradle

將其添加到build.gradle(Module:app)的末尾:

    configurations.all {
        resolutionStrategy.eachDependency { DependencyResolveDetails details ->
            def requested = details.requested
            if (requested.group == 'com.android.support') {
                if (!requested.name.startsWith("multidex")) {
                    details.useVersion '25.3.1'
                }
            }
    }
}

Android庫版本應該使用與您未包含的buildToolsVersion相同的版本。 對於SDK 27,您應該使用27.0.3。 因此,android部分應以以下內容開頭:

compileSdkVersion 27
buildToolsVersion "27.0.3"

並且包含的​​庫應以

:27.0.3

我解決了解析依賴樹的問題:

gradlew app:dependencies

所以我看到沖突是com.firebaseui:firebase-ui-auth:0.6.0可傳遞依賴項

然后我在我的build.glade上使用exclude:

compile ('com.firebaseui:firebase-ui:0.6.0') {
    exclude group: 'com.android.support'
    exclude group: 'com.google.firebase'
    exclude group: 'com.google.android.gms'
}

沒有更多的混合版本:D

configurations.all {
    resolutionStrategy {
        implementation 'com.android.support:design:27.1.0'
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM