Mehrere dex-Dateien definieren Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat

Lesezeit: 8 Minuten

Mehrere dex Dateien definieren Landroidsupportv4accessibilityserviceAccessibilityServiceInfoCompat
xrd

Wenn ich laufe gradle assembleDebug Über die Befehlszeile erhalte ich plötzlich diesen Fehler:

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 suche, 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 Support-Bibliothek:

compile 'com.android.support:support-v13:19.0.0'

Ich bin ratlos, 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 suche, sehe ich es in der Datei:

Binary file build/exploded-bundles/ComGoogleAndroidGmsPlayServices4030.aar/classes.jar matches

Wenn ich v13 nicht einfüge, werden andere Dinge nicht kompiliert.

Aber enthält v13 nicht die v4-Unterstützungsbibliothek?

Ist dies eine Inkompatibilität zwischen dem AAR-Bundle von Play Services und der v13-Bibliothek?

Ich habe mir die Gradle-Datei von gradleplease.appspot.com geholt.

Das Entfernen von Spieldiensten behebt es 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'
}

  • Ich habe alle Lösungen ausprobiert, und es ist passiert, dass alle nicht funktioniert haben. Dann habe ich einfach ein neues Projekt mit demselben Namen erstellt und alle Dateien aus dem alten Projekt kopiert. Und es funktioniert jetzt super. Ich hoffe es hilft.

    – Sam003

    25. März 2015 um 20:01 Uhr

  • Ich hatte dieses Problem mit einer Komponente in support-v13. Nach langem Debuggen und vergeblichem Ausprobieren aller Antworten fand ich heraus, dass es eingeführt wurde, als ich versuchte, Kotlin in das Projekt zu integrieren, das ein vorhandenes Java-Projekt war. Ich habe die Kotlin-Standardbibliothek und andere Kotlin-Bibliotheken entfernt und es war in Ordnung. Ich würde immer noch versuchen, das Problem mit Kotlin zu beheben, aber jetzt muss ich arbeiten. Jede Info würde auch helfen, liebe Kotlin wirklich.

    – Clementiano

    27. März 2018 um 15:11 Uhr

Mehrere dex Dateien definieren Landroidsupportv4accessibilityserviceAccessibilityServiceInfoCompat
CommonsWare

Laufen gradle -q dependencies (oder gradle -q :projectName:dependencies), um einen Abhängigkeitsbericht zu generieren. Sie sollten sehen, wo r7 kommt aus, wie zum Beispiel:

compile - Classpath for compiling the main sources.
+--- com.commonsware.cwac:camera-v9:0.5.4
|    +--- com.actionbarsherlock:actionbarsherlock:4.4.0
|    |    \--- com.google.android:support-v4:r7
|    +--- com.commonsware.cwac:camera:0.5.4
|    \--- com.android.support:support-v4:18.0.+ -> 18.0.0
\--- com.android.support:support-v4:18.0.+ -> 18.0.0

Verwenden Sie dann die exclude Anweisung zum Blockieren dieser Abhängigkeit. In meinem Fall kommt es aus meiner CWAC-Kamerabibliothek, und so verwende ich:

dependencies {
    compile('com.commonsware.cwac:camera-v9:0.5.4') {
      exclude module: 'support-v4'
    }

    compile 'com.android.support:support-v4:18.0.+'
}

(Wo die zweite compile Aussage gibt an, welche Version Sie eigentlich wollen)

Das sollte die Sache klären, wie Sie sehen werden, wenn Sie den Abhängigkeitsbericht erneut ausführen:

compile - Classpath for compiling the main sources.
+--- com.commonsware.cwac:camera-v9:0.5.4
|    +--- com.actionbarsherlock:actionbarsherlock:4.4.0
|    \--- com.commonsware.cwac:camera:0.5.4
\--- com.android.support:support-v4:18.0.+ -> 18.0.0

  • Gibt es eine Methode zum Überprüfen/Ausschließen von Modulen aus .jar-Abhängigkeiten, die auf Maven nicht verfügbar sind? gradle dependencies scheint keine hinzugefügten Abhängigkeiten zu melden compile files('libs/example.jar')

    – dbro

    21. Januar 2014 um 20:47 Uhr


  • Nehmen wir an, ich habe zwei libs/*.jar Abhängigkeiten mit einem gemeinsamen Modul, beide sind nicht als Artefakt verfügbar. Gibt es eine Möglichkeit, eine ähnliche Abhängigkeitsprüfung / Klassenausschluss durchzuführen?

    – dbro

    21. Januar 2014 um 20:59 Uhr

  • @dbro: Nicht, dass ich mir dessen bewusst wäre, aber andererseits habe ich diesen Punkt nicht recherchiert. IMHO, aus dem Stegreif, eine oder beide dieser JAR-Dateien fühlen sich falsch verpackt an, da das gemeinsame Modul in ein eigenes JAR ausgelagert werden sollte.

    – CommonsWare

    21. Januar 2014 um 21:15 Uhr


  • ./gradlew -q :projectName:dependencies hat bei mir funktioniert

    – Defuera

    17. November 2014 um 16:28 Uhr


  • Kurzer Tipp für diejenigen, die ein Modul aus einer Modulabhängigkeit ausschließen: Sie müssen Ihre drehen compile project(':foo') hinein compile(project(':foo')) { exclude module: 'support-v4' }. Beachten Sie die Klammer.

    – Espinchi

    22. November 2014 um 17:28 Uhr

1646644392 192 Mehrere dex Dateien definieren Landroidsupportv4accessibilityserviceAccessibilityServiceInfoCompat
mike.tihonchik

Ich habe einen ähnlichen Fehler behoben, indem ich den folgenden Code zu meinem hinzugefügt habe build.gradle Datei innerhalb des Android-Blocks.

android {
    dexOptions {
        preDexLibraries = false
    }
}

  • Hat für mich funktioniert! Gibt es irgendwelche Nachteile, wenn man es so macht?

    – Barrie Galitzky

    23. Juli 2014 um 5:00 Uhr

  • @BarrieGalitzky Ich bin bisher auf keine Probleme gestoßen

    – mike.tihonchik

    23. Juli 2014 um 13:13 Uhr

  • Danke Mann, das hat perfekt funktioniert, um das Problem zu lösen! Wie auch immer, ich denke, dass es einige Nebenwirkungen hat. Die Aufgabe AssembleDebug wurde dreimal langsamer!

    – Marino

    23. Oktober 2014 um 0:40 Uhr

  • dexOptions nicht gefunden.

    – Oliver Dixon

    31. Januar 2015 um 4:32 Uhr

  • Nachdem ich dies hinzugefügt hatte, erhielt ich den Fehler „Die Übersetzung wurde unterbrochen“. Ich schätze, ich muss die CommonsWare-Methode ausprobieren.

    – Droidenhimmel

    20. Mai 2017 um 9:26 Uhr

Mehrere dex Dateien definieren Landroidsupportv4accessibilityserviceAccessibilityServiceInfoCompat
MBH

Seit 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 zeigen, die von gepostet wurde @edsappfactory.com das hat bei mir funktioniert:

Zuerst Öffnen Sie die Gradle-Ansicht auf der rechten Seite von Androidstudio, gehen Sie im Element Ihrer App zu Tasks dann Android dann Rechtsklick androidDependencies dann wähle Run:

Schritt 1

Sekunde Sie werden so etwas sehen:

Schritt 2

Der Hauptgrund, warum ich dies gepostet habe, war, dass es nicht einfach war zu wissen, wo eine ausgeführt werden sollte gradle Aufgabe oder die oben geposteten Befehle. Hier können sie also auch hingerichtet werden.

SO, um den Gradle-Befehl auszuführen:

Zuerst:

Erste

Sekunde:

Sekunde

Einfach wie es ist.

Das ist es.

Danke.

Beachten Sie auch, dass Sie Ihre Android-Abhängigkeiten sehen können, indem Sie zu Ihrer Android Studio Gradle-Ansicht gehen und 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 meinen zugehörigen Modul-/Bibliotheksprojekten entfernt habe.

1646644395 808 Mehrere dex Dateien definieren Landroidsupportv4accessibilityserviceAccessibilityServiceInfoCompat
Stevey

Ich habe diesen Fehler beim Upgrade auf ButterKnife 8.5.1 erhalten. Keine der anderen Antworten hier hat bei mir funktioniert.

ich benutzte gradle -q :app:dependencies um den Baum zu sehen, und habe dann JAR-Dateien durchgesehen, bis ich den Konflikt gefunden habe. Der Konflikt war die Abhängigkeit dieses Buttermessers com.android.support:support-compat:25.1.0 enthält eine Version der Barrierefreiheitsklasse und com.android.support:support-v4:23.1.1 enthält auch die Klasse.

Ich habe es gelöst, indem ich meine Abhängigkeit von diesem geändert habe:

compile 'com.jakewharton:butterknife:8.5.1'

dazu:

compile('com.jakewharton:butterknife:8.5.1') {
    exclude module: 'support-compat'
}

Bisher scheint es keinen Einfluss auf den Betrieb von ButterKnife zu haben.

Bearbeiten: Es gibt eine bessere Lösung, die darin bestand, meine Android-Unterstützungsbibliotheken so zu aktualisieren, dass sie mit denen von ButterKnife übereinstimmen:

compile('com.android.support:appcompat-v7:25.2.0')
compile('com.android.support:design:25.2.0')
compile 'com.jakewharton:butterknife:8.5.1'

  • Die Support-Version beibehalten, ist eine einfache Lösung, und das Ausschlussmodul funktioniert bei mir nicht.

    – Jay

    16. März 2017 um 9:19 Uhr


  • Ich habe auch mit der zweiten Lösung gelöst! Gleicher Konflikt, aber mit Butter Knife Version 8.8.1 Beispiel: implementierung (‘com.jakewharton:butterknife:8.8.1’) {exclude module: ‘support-compat’ } annotationProcessor ‘com.jakewharton:butterknife-compiler:8.8.1’

    – GFPF

    25. Juni 2018 um 19:23 Uhr


1646644395 32 Mehrere dex Dateien definieren Landroidsupportv4accessibilityserviceAccessibilityServiceInfoCompat
Gemeinschaft

Falls jemand herausfindet, dass die Antwort von CommonsWare nicht auf das Android-Bibliotheksprojekt angewendet werden konnte, finden Sie hier das zu behebende Snippet

kompilieren (Projekt(‘:yourAndroidLibrary’)){ Modul ausschließen: ‘support-v13’ }

Sie werden Probleme finden

Nicht unterstützte Gradle-DSL-Methode gefunden: ‘exclude()’

wenn Sie kompilieren project(‘:yourAndroidLibrary’){ Modul ausschließen: ‘support-v13’ }

Die Unterschiede sind das Armband “(“ und “)” Vor “Projekt”.

  • Die Support-Version beibehalten, ist eine einfache Lösung, und das Ausschlussmodul funktioniert bei mir nicht.

    – Jay

    16. März 2017 um 9:19 Uhr


  • Ich habe auch mit der zweiten Lösung gelöst! Gleicher Konflikt, aber mit Butter Knife Version 8.8.1 Beispiel: implementierung (‘com.jakewharton:butterknife:8.8.1’) {exclude module: ‘support-compat’ } annotationProcessor ‘com.jakewharton:butterknife-compiler:8.8.1’

    – GFPF

    25. Juni 2018 um 19:23 Uhr


1646644395 497 Mehrere dex Dateien definieren Landroidsupportv4accessibilityserviceAccessibilityServiceInfoCompat
Pellet

exclude module: 'support-v4'

Würde bei mir mit einer Projektabhängigkeit nicht funktionieren, ich konnte es nur über die folgende Syntax zum Laufen bringen:

configurations {
    dependencies {
        compile(project(':Android-SDK')) {
            compile.exclude module: 'support-v4'
        }
    }
}

Wobei :Android-SDK Ihr Projektname ist.

964690cookie-checkMehrere dex-Dateien definieren Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy