Wenn ich gradle assembleDebug
über die Befehlszeile laufe , wird plötzlich folgende Fehlermeldung angezeigt:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
at com.android.dx.command.dexer.Main.run(Main.java:232)
at com.android.dx.command.dexer.Main.main(Main.java:174)
at com.android.dx.command.Main.main(Main.java:91)
Wenn ich nach v4 grep, sehe ich zwei Dateien in meinem Build-Ordner.
Binary file build/pre-dexed/debug/support-v4-19.0.0-2ba5fdd60a6c3836b3104a863fe42897da1fa9d1.jar matches
Binary file build/pre-dexed/debug/support-v4-r7-227d905d79b23b20866531d4f700446c040a2ccb.jar matches
Meine Gradle-Datei enthält nur diese Unterstützungsbibliothek:
compile 'com.android.support:support-v13:19.0.0'
Ich bin ratlos darüber, wie die r7-Bibliothek irgendwie enthalten ist. Ich bin gelaufen gradle clean
und es erscheint immer dort, wenn ich assembleDebug erneut ausführe .
Wenn ich im Build-Verzeichnis nach r7 greife, sehe ich es in der Datei:
Binary file build/exploded-bundles/ComGoogleAndroidGmsPlayServices4030.aar/classes.jar matches
Wenn ich v13 nicht einbinde, werden andere Dinge nicht kompiliert.
Aber enthält v13 nicht die v4-Unterstützungsbibliothek?
Ist dies eine Inkompatibilität zwischen dem AAR-Bundle für Wiedergabedienste und der v13-Bibliothek?
Ich habe die Gradle-Datei von gradleplease.appspot.com geholt.
Das Entfernen von Spieldiensten behebt das Problem nicht. gleicher Fehler.
Meine Abhängigkeiten in build.gradle:
dependencies {
// Google Play Services
//compile 'com.google.android.gms:play-services:4.0.30'
// Support Libraries
//compile 'com.android.support:support-v4:19.0.0'
///compile 'com.android.support:appcompat-v7:19.0.0'
//compile 'com.android.support:gridlayout-v7:19.0.0'
compile 'com.android.support:support-v13:19.0.0'
compile 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5'
compile 'commons-codec:commons-codec:1.9'
compile 'com.madgag:markdownj-core:0.4.1'
compile 'com.wu-man:android-oauth-client:0.0.2'
compile 'com.google.http-client:google-http-client-jackson2:1.17.0-rc'
compile 'org.apache.commons:commons-lang3:3.2'
compile 'com.google.code.gson:gson:2.2.4'
}
Antworten:
Führen Sie
gradle -q dependencies
(odergradle -q :projectName:dependencies
) aus, um einen Abhängigkeitsbericht zu generieren. Sie sollten sehen, woherr7
es kommt, wie zum Beispiel:Verwenden Sie dann die
exclude
Anweisung, um diese Abhängigkeit zu blockieren. In meinem Fall stammt es aus meiner CWAC-Kamerabibliothek und ich verwende:(wobei die zweite
compile
Anweisung angibt, welche Version Sie tatsächlich möchten)Das sollte die Sache klären, denn Sie werden sehen, ob Sie den Abhängigkeitsbericht erneut ausführen:
quelle
gradle dependencies
scheint keine Abhängigkeiten zu melden, die mitcompile files('libs/example.jar')
libs/*.jar
Abhängigkeiten mit einem Modul gemeinsam, von denen keine als Artefakt verfügbar ist. Gibt es eine Möglichkeit, eine ähnliche Abhängigkeitsprüfung / einen ähnlichen Klassenausschluss durchzuführen?compile project(':foo')
in verwandelncompile(project(':foo')) { exclude module: 'support-v4' }
. Beachten Sie die Klammer.Ich habe einen ähnlichen Fehler behoben, indem ich meiner build.gradle- Datei im Android-Block folgenden Code hinzugefügt habe .
quelle
Denn ein Bild sagt mehr als tausend Worte
Um es einfacher und schneller zu machen, diese Aufgabe mit Anfängern wie mir zu erledigen. Dies sind die Screenshots, die die Antwort von @ edsappfactory.com zeigen , die für mich funktioniert hat:
Zunächst öffnen Sie die Gradle Ansicht auf der rechten Seite von Android Studio, in Artikel gehen Ihrer App auf
Tasks
dannAndroid
anschließend mit der rechten MaustasteandroidDependencies
und wählen SieRun
:Zweitens sehen Sie so etwas:
Der Hauptgrund, warum ich dies gepostet habe, war, dass es nicht einfach war zu wissen, wo eine
gradle
Aufgabe oder die oben angegebenen Befehle ausgeführt werden sollten. Hier können Sie sie also auch entschuldigen.SO, um den Gradle-Befehl auszuführen:
Zuerst:
Zweite:
So einfach ist das.
Das ist es.
Danke dir.
quelle
Beachten Sie auch, dass Sie Ihre Android-Abhängigkeiten anzeigen können, indem Sie in Ihrer Android Studio Gradle-Ansicht das Ziel "androidDependencies" auswählen.
Noch ein Tipp: Ich hatte dieses Problem, bis ich die v4-Unterstützungsbibliothek aus dem libs-Ordner sowohl im Projekt als auch in den zugehörigen Modul- / Bibliotheksprojekten entfernt habe.
quelle
Beim Upgrade auf ButterKnife 8.5.1 wurde dieser Fehler angezeigt. Keine der anderen Antworten hier hat bei mir funktioniert.
Früher
gradle -q :app:dependencies
habe ich den Baum gesehen und dann die JAR-Dateien durchgesehen, bis ich den Konflikt gefunden habe. Der Konflikt bestand darin, dass die Abhängigkeit von Butterknife voncom.android.support:support-compat:25.1.0
eine Version der Eingabehilfenklasse undcom.android.support:support-v4:23.1.1
auch die Klasse enthält.Ich habe es gelöst, indem ich meine Abhängigkeit davon geändert habe:
dazu:
Dies scheint den Betrieb von ButterKnife bisher nicht zu beeinträchtigen.
Bearbeiten: Es gibt eine bessere Lösung, nämlich meine Android-Support-Bibliotheken so zu aktualisieren, dass sie mit denen von ButterKnife übereinstimmen:
quelle
Falls jemand herausfindet, dass die Antwort von CommonsWare nicht auf ein Android-Bibliotheksprojekt angewendet werden kann, finden Sie hier das zu behebende Snippet
compile (project (': yourAndroidLibrary')) {Modul ausschließen: 'support-v13'}
Sie werden Probleme finden
Wenn Sie ein Kompilierungsprojekt verwenden (': yourAndroidLibrary') {Modul ausschließen: 'support-v13'}
Die Unterschiede sind das Armband "(" und ")" vor "Projekt" .
quelle
Würde für mich mit einer Projektabhängigkeit nicht funktionieren, konnte ich es nur über die folgende Syntax zum Laufen bringen:
Wo: Android-SDK ist Ihr Projektname.
quelle
Ich hatte das gleiche Problem und es scheint, dass meine App aufgrund der Bibliotheken zu viele Methoden hatte: http://developer.android.com/tools/building/multidex.html
Es wurde gelöst mit:
Mehr hier Fehler: Ausführung für Aufgabe ': app: dexDebug' fehlgeschlagen. > Befehl mit Exit-Wert 2 ungleich Null beendet
quelle
Ich hatte den gleichen Fehler, aber das lag daran, dass ich kürzlich von v4 auf v13 gewechselt hatte. Also musste ich nur das Projekt reinigen.
quelle
Ich hatte den gleichen Fehler bei einem Legacy-Projekt. Mein Fehler war, dass die Support-Bibliothek zweimal enthalten war: Einmal in der Google-Play-Services-Bibliothek und einmal als eigenständige.
So habe ich es behoben:
BAD build.gradle:
GUT build.gradle:
Hoffe es hilft jemandem :-)
quelle
Ich benutze
com.google.android.gms:play-services-analytics:8.3.0
undandroid-support-v13.jar
und konnte nichtexclude module: 'support-v4'
zur Arbeit kommen.Was für mich funktionierte, war die Verwendung des
android-support-v13
Artefakts anstelle derandroid-support-v13.jar
Datei.Dh statt
}}
ich benutzte
}}
quelle
In meinem Fall wurde das Problem durch Versionsinkonsistenz verursacht :
Die Lösung war einfach: Machen Sie alles Version 25
quelle
Ein ähnliches Dex-Problem wurde behoben
gradle.build enthielt:
Das Problem wurde behoben, als ich entfernte
Mein Gradle sieht jetzt so aus:
Es gab eine Redundanz in der JAR - Datei und das kompilierte gradle Projekt
Suchen Sie daher sorgfältig nach Abhängigkeits- und JAR-Dateien mit denselben Klassen.
Und entfernen Sie Redundanz.
Das hat bei mir funktioniert.
quelle
Wenn Sie Ihr Projekt aus Eclipse importiert haben .
Das Szenario, mit dem ich nach dem Importieren des Eclipse-Projekts in Android Studio konfrontiert war.
Hoffe das hilft..
quelle
Dies ist ein ärgerliches Problem, das einige Zeit in Anspruch nehmen kann, um den Grundfall herauszufinden. Die Vorgehensweise ist @CommonsWare Antwort.
Ich war kürzlich mit diesem Problem konfrontiert und fand es schwierig, es zu lösen.
Mein Problem war, dass ich eine Bibliothek mit der Version "+" in build.gradle aufgenommen habe. Die neueste Version der Bibliothek enthielt einen älteren Dex und Bang.
Ich kehrte zu einer älteren Version der Bibliothek zurück und löste sie.
Es ist gut, Ihre androidDependencies auszuführen und zu sehen, was wirklich passiert. Es ist auch gut, in Ihrem Build-Ordner zu suchen.
Vor allem Android Studio 2.2 bietet integrierte Funktionen, um dieses Problem zu verfolgen.
Happy Coding Guys
quelle
Wechseln Sie in Android Studio zu Ihrem build.gradle (überprüfen Sie die build.gradle-Dateien für Projekte und Module) und suchen Sie nach doppelten Abhängigkeiten.
Löschen Sie diejenigen, die Ihr Projekt nicht benötigt.
quelle
Das Löschen aller Dateien aus dem Gradle-Cache hat mein Problem behoben.
unter Linux:
quelle
Ich habe die Kompilierung 'com.android.support:support-v4:18.0.+' in Abhängigkeiten entfernt und es funktioniert
quelle
Ich konnte das Problem in meinem reaktiven nativen Projekt durch einfaches Hinzufügen lösen
am Ende meiner android \ app \ build.gradle Datei
quelle
Schließlich habe ich es gelöst, indem ich diese Attribute in der Modul-Gradle-Datei geändert habe
quelle
Ich hatte das gleiche Problem beim Hinzufügen
react-native-palette
zu meinem Projekt. Hier ist mein Abhängigkeitsbaum:Ich habe viele Lösungen ausprobiert und konnte sie nicht beheben, bis ich die
com.android.support:appcompat
Version geändert habe.android/app/build.gradle
Ich wünschte, dies könnte helfen:Es scheint, dass mehrere Einträge kein großes Problem sind, Versionsinkongruenz ist
quelle
Es hat für einen
compile file('...')
Konflikt funktioniert, indem minSdkVersion auf 21 erhöht und Multidex aktiviert wurde. Ich bin mir nicht sicher, ob dies die beste Lösung ist, aber die einzige Möglichkeit, sie in meinem Fall zum Laufen zu bringen.Hinweis:
compile file('...')
Es scheint, dass Sie keineexclude
Klausel einfügen können, sodass diese Option nicht verfügbar war.quelle
Ich hatte das gleiche Problem und meine Lösung besteht darin, die Support-Version '27. + '(27.1.0) in '27 .0.1' zu ändern.
quelle
Ich hatte das gleiche Problem. In meinem Projekt hatte ich folgende Abhängigkeiten:
Aus alten Gründen wurde der Appcompat aus dem Google Maven-Repo abgerufen, während die Android-Unterstützung eine lokale .jar-Datei war.
Als ich dies herausfand und diese lokale Referenz durch eine Maven-Referenz ersetzte, löste dies nur mein Build-Problem.
Hier ist der Unterschied zu meiner App / build.gradle:
quelle
Ich habe alle meine Probleme gelöst, indem ich dies zu project.properties hinzugefügt habe
quelle
Erhielt den folgenden Fehler
Ausführung für Task ': app: transformDexArchiveWithDexMergerForDebug' fehlgeschlagen.
Fix: Gehen Sie zu Build -> Clean Project
quelle