java.util.zip.ZipException: doppelter Eintrag während packageAllDebugClassesForMultiDex

117

Ich bin nicht sicher, was dieser Fehler bedeutet.

Execution failed for task ':excelSior:packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: android/support/v4/util/TimeUtils.class

Ich benutze derzeit android-support-v4.jarfür meine Bibliotheken

dependencies {
    compile project(':addThisSDK')
    compile project(':centeredContentButton')
    compile project(':googleplayservices_lib')
    compile files('libs/adxtag2.4.6.jar')
    compile files('libs/android-support-v4.jar')
    compile files('libs/aws-android-sdk-1.7.1.1-debug.jar')
    compile files('libs/commons-lang-2.6.jar')
    compile files('libs/crittercism_v4_4_0_sdkonly.jar')
    compile files('libs/dd-plist.jar')
    compile files('libs/FiksuAndroidSDK_4.1.1.jar')
    compile files('libs/iqengines-sdk-barcode.jar')
    compile files('libs/irEventTracker-1.2.jar')
    compile files('libs/jolt-core-0.0.7.jar')
    compile files('libs/json-utils-0.0.7.jar')
    compile files('libs/jsoup-1.7.2.jar')
    compile files('libs/kooaba-api-v4-java.jar')
    compile 'com.android.support:multidex:1.0.0'
}

Während der Gradle-Synchronisierung wird kein Fehler angezeigt. Nur wenn ich versuche, die Anwendung auszuführen

Was könnte das Problem sein?

bman
quelle
1
Der Fehler tritt auf, wenn eine andere JAR-Abhängigkeit von Ihnen dieselbe Klasse hat. Stellen Sie sicher, dass Sie keine Unterstützungs-JAR als Gradle- und JAR-Abhängigkeit hinzugefügt haben. Bitte fügen Sie der Frage den vollständigen Abschluss der Abhängigkeit bei.
Pyus13
@ Pyus13 danke. Ich habe die Frage aktualisiert. Dies ist meine gesamte Abhängigkeitsliste
bman
1
Sie haben 3 Modulabhängigkeiten in Ihrem Projekt, stellen Sie also sicher, dass nur eine von ihnen die Unterstützung-v4 als Abhängigkeit hat.
Pyus13
Bitte sehen Sie meine Antwort unter: stackoverflow.com/questions/28168063/…
Tomer
Fehler: Ausführung für Aufgabe ': Mulugu Astro: transformClassesWithJarMergingForDebug' fehlgeschlagen. > com.android.build.api.transform.TransformException: java.util.zip.ZipException: doppelter Eintrag: android / support / v4 / view / ViewPager $ MyAccessibilityDelegate.class
Harsha

Antworten:

64

Sie müssen überprüfen, ob Sie die v4-Bibliothek eingefügt und die Bibliothek kompiliert haben? Sie dürfen die Bibliothek in Ihrer App oder Ihrem Abhängigkeitsprogramm nicht wiederholen.

Löschen Sie die Wiederholungsbibliothek, sodass nur noch eine V4 übrig bleibt.

Fügen Sie in Ihrer App-Verzeichnisdatei build.gradlediesen Befehl hinzu:

android{


    configurations {
        all*.exclude group: 'com.android.support', module: 'support-v4'
        all*.exclude group: 'com.android.support', module: 'support-annotations'
    }

}

Für mich geht das! Du kannst es versuchen!

GeekHades
quelle
19
Nach dem Hinzufügen dieser Fragmente kann v4 nicht unterstützt werden. Irgendeine Idee?
Nisarg
@Nisarg passiert mir auch.
CJ_COIMBRA
@Nisarg Sie können gradle verwenden, um das Programm neu zu kompilieren.
GeekHades
@NisargKannst du mir bitte helfen, wie ich wieder neu kompilieren kann? Auch ich habe das gleiche Problem wie deins. Fragmente und Taskstackbuilder haben aufgehört zu lösen
Gaurav Arora
82

Sie haben dies wahrscheinlich inzwischen behoben, aber damit dies nicht unbeantwortet bleibt, fügen Sie dies zu Ihrem hinzu build.gradle:

configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
}
zwebie
quelle
4
Ich habe die Konfigurationszeile hinzugefügt, aber es wird immer noch Error:Execution failed for task ':Analyst:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: com/android/vending/billing/IInAppBillingService$Stub$Proxy.classangezeigt.
BiswajitGhosh
2
Wie haben Sie das Problem behoben?
Arslan Anwar
9
Gibt es eine richtige Lösung?
Ich bekomme
2
Fehler: (5, 30) Fehler: Paket android.support.v4.app existiert nicht Erhalten Sie diesen Fehler nach dem Hinzufügen Ihrer Antwort
Ankit Thakkar
1
Wohin soll das gehen, ich bin neu in gradle und es gibt 5 build.gradle-Dateien in meinem aktuellen Projekt, keine von ihnen enthält configurationssie und es scheint egal zu sein, wo ich sie ablege , ich bekomme Fehler wie kann nicht Symbol 'ausschließen' auflösen oder Symbol 'alle' nicht auflösen
JStephen
25

Ich bin auch auf dieses Problem gestoßen, als ich ein altes Eclipse-Projekt erneut importiert habe. Es ist eine alte Abhängigkeit als JAR-Datei im Projekt aufgetreten.

einfach entfernen

compile fileTree (dir: 'libs', include: '* .jar')

in Gradle-Datei

und fügen Sie die Abhängigkeit in die Gradle-Datei ein.

Für mich geht das ..

Paraneetharan Saravanaperumal
quelle
Dieser Fehler trat beim Importieren eines alten Eclipse-Projekts auf. Leider habe ich einen Teil der Referenzbibliothek entfernt und dieselbe Abhängigkeit in die Gradle-Datei eingefügt.
Paraneetharan Saravanaperumal
1
Hat bei mir funktioniert (auch aus alter Eclipse-Konfiguration importieren). Danach war eine Reinigung und ein Umbau erforderlich.
Paco Abato
17
Warum sollte ich einem namens Sauron vertrauen?
matthias_b_nz
Hat diesen speziellen Fehler gestoppt, aber Dutzende anderer verursacht. Manchmal brauchen Sie diese Abhängigkeiten. So seltsam das auch klingen mag, Sauron hatte diesmal Recht.
SMBiggs
1
Wenn Sie Ihre Abhängigkeiten nacheinander explizit hinzufügen, werden Sie wahrscheinlich eine doppelte .jarBibliothek aufdecken , die Sie zweimal einschließen. Niemals verwenden compile fileTree(...), es verbirgt zu viele offensichtliche Fehler.
Joshua Pinter
13

In meinem Fall ist der erwähnte Fehler "doppelter Eintrag" nach dem Setzen multiDexEnable=truein der build.gradle aufgetreten.

Um den Fehler vollständig zu beheben, schauen Sie sich zunächst Apps mit über 64K-Methoden konfigurieren an (insbesondere "Konfigurieren Ihrer App für Multidex mit Gradle").

Suchen Sie außerdem mit Strg + n in Android Studio nach Vorkommen der Klasse, die den Fehler "doppelter Eintrag" verursachen. Bestimmen Sie das Modul und die Abhängigkeit, die das Duplikat enthält, und schließen Sie es vom Build aus, z.

compile ('org.roboguice:roboguice:2.0') {
    exclude module: 'support-v4'
}

Ich musste mehrere Moduletiketten ausprobieren, bis es funktionierte. Das Ausschließen von "support-v4" löst Probleme im Zusammenhang mit "java.util.zip.ZipException: doppelter Eintrag: android / support / v4 / *"

b00n12
quelle
9

Nach meinem Verständnis gibt es doppelte Verweise auf dieselbe API (wahrscheinlich unterschiedliche Versionsnummern). Das Debuggen beim Erstellen über die Befehlszeile sollte relativ einfach sein.

Versuchen Sie es ./gradlew yourBuildVariantName --debugüber die Befehlszeile.

Der beleidigende Gegenstand ist der erste Fehler. Ein Beispiel könnte folgendermaßen aussehen:

14:32:29.171 [INFO] [org.gradle.api.Task] INPUT: /Users/mydir/Documents/androidApp/BaseApp/build/intermediates/exploded-aar/theOffendingAAR/libs/google-play-services.jar

14:32:29.171 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':BaseApp:packageAllyourBuildVariantNameClassesForMultiDex'

14:32:29.172 [LIFECYCLE] [class org.gradle.TaskExecutionLogger] :BaseApp:packageAllyourBuildVariantNameClassesForMultiDex FAILED'

Im obigen Fall enthielt die aar-Datei, die ich in mein libs-Verzeichnis (theOffendingAAR) aufgenommen hatte, die JAR-Datei von Google Play Services (ja, das Ganze. Ja, ich weiß.), Während meine BaseApp-Erstellungsdatei Ortungsdienste verwendete:

compile 'com.google.android.gms:play-services-location:6.5.87'

Sie können das fehlerhafte Element sicher aus Ihren Build-Dateien entfernen, bereinigen und neu erstellen (ggf. wiederholen).

user01000101
quelle
1
Was ist, wenn ich die beleidigende Bibliothek brauche?
Janusz
1
Dies hat mir geholfen, die beleidigende Bibliothek
aufzuspüren
1
Dies hilft nicht ... beim Entfernen der fehlerhaften Bibliothek kann das Modul nicht kompiliert werden
Utsav Gupta
9

Überprüfen Sie Ihre Abhängigkeitsversionen. Sie müssen kompatible Versionen haben, die speziell auf com.google-Pakete achten. Sie müssen dieselbe Version haben wie:

compile 'com.google.android.gms:play-services:8.3.0'
compile 'com.google.android.gms:play-services-maps:8.3.0'

Beide sind 8.3.0, wenn Sie eine andere Versionskompilierung haben, wird diese Ausnahme ausgelöst.

Ninja-Codierung
quelle
Danke Mann, ich arbeite perfekt und habe drei verschiedene Google Play Services. Kompilieren Sie 'com.google.android.gms: Play-Services-Analytics: 8.4.0' Compile 'com.google.android.gms: Play-Services-Anzeigen: 8.3 .0 'kompilieren' com.google.android.gms: play-services-plus: 8.4.0 '
Samadhan Medge
5

Einfach Entfernen Sie Ihre Jar-Datei aus den Abhängigkeiten gardle.project als v7 und führen Sie Ihr Projekt aus

Sanjay Kumar Thakur
quelle
Das ist Arbeit für mich, entfernen Sie einfach "Dateien kompilieren ('libs / android-support-v13.jar')" aus "Abhängigkeiten" in meinem "build.gradle (Modul: App)". Als Referenz erhalten Sie diesen Fehler nach dem Importieren des Projektformulars Eclipse in Android Studio.
Rafaellorey
5

Für Expose.class Error dh

java.util.zip.ZipException: doppelter Eintrag: com / google / gson / annotations / Expose.class

Verwenden Sie den folgenden Code

configurations {
    all*.exclude  module: 'gson'
}
Laveen Balakrishna
quelle
11
Das OP sagte nichts darüber gson.
IgorGanapolsky
3

Finden Sie heraus, dass die Bibliothek von der Unterstützung v4 abhängt, und schließen Sie sie aus.

Code in build.gradleist wie folgt:

androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.1') {
    // http://stackoverflow.com/a/30931887/5210
    exclude group: 'com.android.support', module: 'appcompat'
    exclude group: 'com.android.support', module: 'support-v4'
    exclude module: 'recyclerview-v7'
}

In meiner Situation hat die lib 'espresso' eine JAR namens support-v4 und in meinem Projekt 'app' hat die gleiche support-v4, schließen Sie die support-v4 beim Import von Espresso aus.

PS: es scheint compile projectnicht mit dem zu funktionierenexclude

Ninja
quelle
1

Dies liegt daran, dass Sie eine Bibliothek hinzugefügt und ihre Abhängigkeit von einem Modul mehr als einmal angegeben haben.

In meinem Fall hatte ich eine Bibliothek als Modul und als Gradle-Abhängigkeit hinzugefügt.

Das Entfernen einer Quelle zum Hinzufügen einer Bibliothek (ich habe die Gradle-Abhängigkeit entfernt) löste mein Problem.

Rahul Rastogi
quelle
Alternativ wurde dieses Problem für mich behoben, indem das Glas aus dem libs-Verzeichnis entfernt und die Gradle-Abhängigkeit beibehalten wurde.
Droideckar
Yeh! Das Entfernen einer einzelnen Quelle führt zu dem Problem. Es ist gut, die Gradle-Abhängigkeit aufrechtzuerhalten.
Rahul Rastogi
0

Bei Fehler: Ausführung für Aufgabe ': app: transformClassesWithJarMergingForDebug' fehlgeschlagen. Com.android.build.api.transform.TransformException java.util.zip.ZipException doppelter Eintrag com / google / gson / annotations / Expose.class

Folgendes habe ich getan:

1) Löschen Sie die Datei gson-2.5.jar. 2) Konfigurationen {all * .exclude module: 'gson-2.5'}

LEMUEL ADANE
quelle
Frage war nicht über Gson
OneCricketeer
0

Ich bin mit diesem Problem konfrontiert, da ich das JAR manuell in libs kopiert und die Abhängigkeit in der Gradle-Datei erwähnt habe. Sie überprüfen auch in Ihrer Projektstruktur, ob dieselbe JAR-Datei in einen anderen Ordner wie libs oder in einen Projektordner kopiert wurde.

Ashish Rawat
quelle
0

Ich hatte das gleiche Problem nach dem Upgrade des Android SDK. Ich konnte die Anwendung in ausführen buildToolsVersion '23.0.1', ich habe den gleichen Fehler erhalten, als ich zu gewechselt habebuildToolsVersion '24.0.3'

Ich habe das Problem behoben, indem ich meine Java-Version von 1.7 auf 1.8 mit aktualisiert habe compileSdkVersion 24

Muhamed Riyas M.
quelle
0

Dieses Problem hat mich einen ganzen Tag gekostet. Ich habe schließlich die Version der Firebase-UI-Bibliothek von 2.0.0 auf 1.2.0 herabgestuft und den folgenden Code in die Datei build.gradle auf Projektebene eingefügt:

allprojects {
    repositories {
        jcenter()

        // Add the following code to your project level build.gradle
        maven {
            url 'https://maven.fabric.io/public'
        }
    }
}
Darush
quelle
1
Die Version der Firebase-Benutzeroberfläche hängt davon ab, welche Version von Firebase Sie tatsächlich kompiliert haben
OneCricketeer
0

Ich habe auch das Problem, weil ich 'com.android.support:appcompat-v7:24.0.0-alpha1' kompiliert habe, aber ich habe die liberale Kompilierung 'com.android.support:recyclerview-v7:24.0.2' von recyclerview hinzugefügt. Ich habe die Version genauso geändert wie die kompatible Version (24.0.2 anstelle von 24.0.0).

Ich habe die Antwort ... vielleicht hilft es jemandem.

S HemaNandhini
quelle
0

In meinem Fall ist der erwähnte Fehler "doppelter Eintrag" aufgetreten, nachdem im build.gradle multiDexEnable = true gesetzt wurde.

und der genaue Fehler, den ich bekam, war unten:

Error:Execution failed for task 
':android:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: 
java.util.zip.ZipException: duplicate entry: 
com/google/android/gms/internal/zzqx.class

Als erstes suche ich nach einer Klasse, die mit Strg + n in Android Studio den Fehler "doppelter Eintrag" verursacht, und suche nach com / google / android / gms / internal / zzqx.class. Dann wurden 2 Einträge für die gms-Klasse mit einer Version angezeigt 8.4.0 und 1 mit Version 11.6.0.

Um es zu beheben, habe ich beide gemacht, um 11.6.0 zu verwenden und es wurde Beispiel behoben

vorhin

    compile "com.google.android.gms:play-services-games:11.6.0"
    compile "com.google.android.gms:play-services-auth:8.4.0"
    compile "com.google.android.gms:play-services-ads:11.6.0"

Nach dem

    compile "com.google.android.gms:play-services-games:11.6.0"
    compile "com.google.android.gms:play-services-auth:11.6.0"
    compile "com.google.android.gms:play-services-ads:11.6.0"

Wiederaufbau behoben.

Paarth Batra
quelle
0

In meinem Fall war der genaue Fehler unten

': android: transformClassesWithJarMergingForDebug'.

com.android.build.api.transform.TransformException: java.util.zip.ZipException: doppelter Eintrag: com / google / android / gms / internal / zzqx.class

Ich habe eine andere Version von Google Apis verwendet, dh in einer Modulle-Gradle-Datei

if (!project.hasProperty('gms_library_version')) {
        ext.gms_library_version = '8.6.0'
   }

jedoch in anderen Modulen Version 11.6.0 wie unten

   compile "com.google.android.gms:play-services-ads:11.6.0"
    compile "com.google.android.gms:play-services-games:11.6.0"
    compile "com.google.android.gms:play-services-auth:11.6.0"

Um dies zu finden, habe ich in Android Studio Strg + N gedrückt und den Klassennamen zzqx.class eingegeben. Dann wurden 2 JAR-Dateien angezeigt, die für diese Klasse abgerufen wurden. Dann habe ich verstanden, dass ich irgendwo Version 8.6.0 verwende. Beim Ändern von 8.6.0 auf 11.6.0 und beim erneuten Erstellen des Projekts wurde das Problem behoben.

Hoffe das hilft .

Mehr dazu hier https://www.versionpb.com/tutorials/step-step-tutorials-libgdx-basic-setup-libgdx/implementing-google-play-services-leaderboards-in-libgdx/

Paarth Batra
quelle
0

Für mich passierte etwas Ähnliches, als ich versehentlich hinzugefügt hatte

apply plugin: 'kotlin-android'

zu meinem Android Library Modul. Das Entfernen der Zeile behebt das Problem.

A. Steenbergen
quelle
0

Ich habe alle oben genannten Lösungen ausprobiert, aber nicht für mich gearbeitet. Ich habe versucht, Bibliotheken über goto Projektstruktur> App zu aktualisieren. Und es funktioniert bei mir! Hoffe diese Antwort hilfreich für jemanden.

Pooja
quelle
-1

Versuche dies:

android {
configurations {
        all*.exclude  module: 'PhotoView'  //去除重复依赖库
    }
}
纯洁 的 坏蛋
quelle
Diese Frage bezieht sich auf die Support v4-Bibliothek, nicht auf PhotoView
OneCricketeer
-1

Löschen Sie einfach android / support / v4 / util / TimeUtils.class

jas-chu
quelle
Jesus Christus no
sfratini