wake-up-neo.net

Kompilieren Sie Fehler nach der Aktualisierung auf WorkManager 1.0.0-alpha09

Ich versuche, WorkManager von Architekturkomponenten zu verwenden. Ich habe die compileSdkVersion und die targetSdkVersion von 27 auf 28 aufgerüstet. Aber der Build-Time-Fehler taucht immer wieder auf. Android.support-Bibliotheken verwenden die Version 28.0.0-rc02 wegen 'Android.support:design'.

Ich habe versucht, packagingOptions hinzuzufügen, um 'proguard/androidx-annotations.pro' auszuschließen. Aber es hat nicht geholfen. Diesmal bekam ich jedoch eine andere Fehlermeldung: 

Program type already present: com.google.common.util.concurrent.ListenableFuture

Ich konnte nicht herausfinden, was schief läuft. 

build.gradle: 

apply plugin: 'com.Android.application'

apply plugin: 'kotlin-Android'

apply plugin: 'kotlin-Android-extensions'

apply plugin: 'io.fabric'

Android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.apps.test"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 5
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }

    signingConfigs {
        release
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release

            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
            resValue "bool", "enableFirebase", "true"

        }
        debug {
            minifyEnabled false
            resValue "bool", "enableFirebase", "false"

        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.Android.support:appcompat-v7:28.0.0-rc02'
//    implementation 'com.Android.support:design:27.1.1'
    implementation 'com.Android.support:design:28.0.0-rc02'
    implementation 'com.Android.support:recyclerview-v7:28.0.0-rc02'
    implementation 'com.Android.support:support-v4:28.0.0-rc02'
    implementation 'com.Android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.Android.support:multidex:1.0.3'

    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.google.Android.gms:play-services-maps:15.0.1'
    implementation 'com.google.Android.gms:play-services-location:15.0.1'
    implementation 'com.google.firebase:firebase-core:16.0.3'
    implementation 'com.google.firebase:firebase-auth:16.0.3'
    implementation 'com.google.Android.gms:play-services-auth:16.0.0'
    implementation 'com.google.firebase:firebase-firestore:17.1.0'
    implementation 'com.firebaseui:firebase-ui-firestore:4.1.0'
    implementation 'com.crashlytics.sdk.Android:crashlytics:2.9.5'

    //Arch
    implementation 'Android.Arch.core:runtime:1.1.1'
    implementation 'Android.Arch.core:common:1.1.1'
    implementation 'com.google.code.gson:gson:2.8.5'

    implementation "Android.Arch.work:work-runtime-ktx:1.0.0-alpha09"
//    implementation "Android.Arch.work:work-firebase:1.0.0-alpha09"
}

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

EDIT: Ich habe die packageOptions in gradle wie hier implementiert.

packagingOptions {
    exclude 'META-INF/proguard/androidx-annotations.pro'
}

Aber diesmal habe ich 5 zusätzliche Fehler erhalten:

1:

Program type already present: com.google.common.util.concurrent.ListenableFuture
Message{kind=ERROR, text=Program type already present: com.google.common.util.concurrent.ListenableFuture, sources=[Unknown source file], tool name=Optional.of(D8)}

2:

Caused by: Java.lang.RuntimeException: com.Android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: ...

3:

Caused by: com.Android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: ...

4:

Caused by: com.Android.tools.r8.CompilationFailedException: Compilation failed to complete

5:

Caused by: com.Android.tools.r8.utils.AbortException
15
Orcun Sevsay

Gemäß den Versionshinweisen zu WorkManager 1.0.0-alpha09 :

Bekanntes Problem

Wenn Sie auf folgendes Problem stoßen: "Es wurde mehr als eine Datei mit dem betriebssystemunabhängigen Pfad" META-INF/proguard/androidx-annotations.pro "gefunden", fügen Sie die folgende Datei als temporäre Problemumgehung in die Datei ein, während wir das Problem beheben Ausgabe in alpha10:

Android {
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

Bearbeiten: Ihre zusätzlichen Fehler werden durch dieses Problem verursacht :

Dies geschieht mit Absicht: https://groups.google.com/forum/#!topic/guava-announce/Km82fZG68Sw

Eine neue Version von Guave wird in Kürze verfügbar sein und das Problem automatisch lösen.

Für jetzt können Sie "com.google.guava:listenablefuture" in Ihrer Gradle-Datei ausschließen:

implementation("Android.Arch.work:work-runtime:1.0.0-alpha09") {
    exclude group: 'com.google.guava', module: 'listenablefuture' 
}
33
ianhanniballake

Alles funktioniert einwandfrei, wenn Sie ein Projekt mit Guava v27 und der neuesten Version von WorkManager haben. Ich habe es gerade ausprobiert und es repariert mein Projekt.

Das baut sich prima auf:

dependencies {
   implementation 'Android.Arch.work:work-runtime:1.0.0-beta01'
   implementation 'com.google.guava:guava:27.0.1-Android'
}
2
wiseminds

Die Versionshinweise besagen, dass dieser Fehler in 1.0.0-alpha10 behoben wurde: 

Fehlerbehebung

Das bekannte Problem von Alpha09 in Bezug auf das Duplikat .__ behoben. androidx-annotations.pro-Dateien. Sie können die Problemumgehung aus dem .__ entfernen. frühere Versionshinweise durch Löschen von 'META-INF/proguard/androidx-annotations.pro' aus Ihrer Gradle-Datei.

Quelle


Aber ... Aus irgendeinem Grund sehe ich diesen Fehler immer noch in Version 1.0.0-alpha11.

um dies zu umgehen, können Sie das listenablefuture -Modul von work-runtime als @ianhanniballake in seiner Antwort ausschließen. 

Und auch schließen dasselbe Modul in der Komponente work-firebase aus, als @Zack im Kommentarabschnitt.


build.gradle

    /*
    |--------------------------------------------------------------------------
    | WorkManager
    |--------------------------------------------------------------------------
    */

    def work_version = "1.0.0-alpha11"

    implementation("Android.Arch.work:work-runtime:$work_version") {
        exclude group: 'com.google.guava', module: 'listenablefuture'
    }

    // optional - Firebase JobDispatcher support
    implementation("Android.Arch.work:work-firebase:$work_version") {
        exclude group: 'com.google.guava', module: 'listenablefuture'
    }

    // optional - Test helpers
    androidTestImplementation "Android.Arch.work:work-testing:$work_version"
0
chebaby