Es wurde mehr als eine Datei mit dem vom Betriebssystem unabhängigen Pfad 'META-INF / proguard / androidx-annotations.pro' gefunden.


79

Ich versuche Android WorkManager . Der Code löst den Fehler "Es wurde mehr als eine Datei mit dem betriebssystemunabhängigen Pfad 'META-INF / proguard / androidx-annotations.pro gefunden " aus. Beim Ausführen habe ich die folgende Antwort versucht , sie war nicht hilfreich.

WorkManager-Abhängigkeiten

build.gradle (App)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "rock.dmx.xaro.workmanagerexample"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


}

dependencies {
    def work_version = "1.0.0-alpha09"
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.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 "android.arch.work:work-runtime:$work_version"
}

Antworten:


167

Dies ist derzeit ein bekanntes Problem. Die Versionshinweise zu Architecture Components beschreiben das Problem und bieten eine Lösung, um es bis zur alpha10Version der Work Manager-Bibliothek zu beheben :

Bekanntes Problem

Wenn Sie auf das folgende Problem stoßen: "Es wurde mehr als eine Datei mit dem vom Betriebssystem unabhängigen Pfad 'META-INF / proguard / androidx-annotations.pro' gefunden". Fügen Sie Folgendes als vorübergehende Problemumgehung in Ihre Gradle-Datei ein, während wir das Problem beheben Problem in Alpha10:

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

In Ihrem Fall sollte der Android-Bereich also wie folgt aussehen:

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "rock.dmx.xaro.workmanagerexample"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    // Temporary fix until alpha10
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

Das 1.0.0-alpha10Problem sollte in der WorkManager-Version ordnungsgemäß behoben werden.


Dies ist nur ein weiterer Fall, der zeigt, wie dumm das Ökosystem der Android-Entwicklung ist.
Syloc

In meinem Fall musste ich auch exclude 'META-INF/proguard/coroutines.pro'zu den Verpackungsoptionen hinzufügen
Joaquin Iurchuk

12

Ich habe den gleichen Fehler erhalten, als ich dem Abschnitt build.gradle-Abhängigkeiten meiner App Folgendes hinzugefügt habe:

implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"

Nach der Migration auf AndroidX :

  1. Wählen Sie in Android Studio im Menü Refactor die Option Zu AndroidX migrieren ...
  2. Aktivieren Sie besser die Option zum Sichern Ihres Projekts als Zip-Datei, falls die Migration fehlschlägt.
  3. Nachdem Sie auf Migrieren geklickt haben, können Sie den Speicherort für die Zip-Sicherung auswählen.

jetzt kann ich bisher problemlos bauen.


Mein Setup

Android Studio 3.2.1
JRE: 1.8.0_152-release-1136-b06 x86_64
JVM: OpenJDK 64-Bit-Server-VM von JetBrains
macOS 10.13.6


7

Kann add in build.gradle (App) verwenden (beantwortet von TheStrikeBone )

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

ODER Downgrade- android.arch.workVersion in1.0.0-alpha08

dependencies {
    implementation 'android.arch.work:work-runtime:1.0.0-alpha08'
}

5

Das Hinzufügen zu meiner build.radle-Datei für Apps hat mein Problem gelöst.

android {
  packagingOptions {
    exclude 'META-INF/proguard/androidx-annotations.pro'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/ASL2.0'
  }
}

1
Kannst du mehr erklären, um zu verstehen? Vielen Dank.
Shanteshwar Inde

0

In meinem Fall löse ich das Problem, indem ich androidx.room auf dieselbe Version wie androidx.lifecycle setze


0

Als Anfänger hatte ich dieses Problem, als ich ein vorgefertigtes Projekt für ein Tutorial verwendete, und die obige Lösung funktionierte bei mir nicht.

Für den Fall, dass jemand das gleiche Problem hat.

Ich musste die Gradle-Version in der build.gradleDatei für das Projekt aktualisieren :

buildscript {

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

Dann musste ich Gradle Wrapper aktualisieren in gradle-wrapper.properties:

#Wed Sep 26 11:30:41 IST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

# Delete this
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

# Add this
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

Dann habe ich useAndroidXin der gradle.propertiesDatei true gesetzt :

android.useAndroidX=true

Das ist es. Ich hoffe, es hilft.


0

Suchen Sie immer zuerst nach Implementierungen in Gradle. Vielleicht kollidieren zwei Implementierungen miteinander. Vielleicht haben Sie die Kartenansicht v7 nicht gelöscht und die AndroidX-Kartenansicht hinzugefügt, so etwas wie Sie andere Dinge ausprobieren.

Ich habe genau diese Situation und das Entfernen der alten Implementierung hat das Problem gelöst.

Viel Spaß beim Codieren von Nenad

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.