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

Wenn ich gradle assembleDebug von der Befehlszeile ausführen, gradle assembleDebug 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 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 Support-Bibliothek:

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

Ich bin ratlos darüber, wie die r7-Bibliothek irgendwie enthalten ist. Ich habe gradle clean und es erscheint immer dort, wenn ich AssembledDebug erneut gradle clean .

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 einschließe, werden andere Dinge nicht kompiliert.

Aber enthält v13 keine v4-Unterstützungsbibliothek?

Ist das eine Inkompatibilität zwischen dem Play Services AAR-Bundle und der v13-Library?

Ich nahm die Gradle-Datei von gradleplease.appspot.com.

Das Entfernen von Wiedergabediensten 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' } 

Führen Sie gradle -q dependencies (oder gradle -q :projectName:dependencies ) aus, um einen Abhängigkeitsbericht zu generieren. Sie sollten sehen, woher r7 kommt, 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 statement exclude , um diese Abhängigkeit zu blockieren. In meinem Fall kommt es von meiner CWAC-Camera-Bibliothek und ich verwende:

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

(wobei die zweite compile angibt, welche Version Sie tatsächlich wollen)

Das sollte die Dinge 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 

Ich triggerse einen ähnlichen Fehler, indem ich das folgende Stück Code zu meiner Build.Gradle- Datei im Android-Block hinzufügte.

 android { dexOptions { preDexLibraries = false } } 

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-Support-Bibliothek aus dem libs-Ordner sowohl im Projekt als auch in meinen verwandten Modulen / Bibliotheksprojekten entfernte.

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 von @ edsappfactory.com zeigen , die für mich funktioniert hat:

Öffnen Sie zuerst die Gradle-Ansicht auf der rechten Seite von Androidstudio, gehen Sie im App-Element zu Tasks dann zu Android klicken androidDependencies dann mit der rechten androidDependencies auf androidDependencies und wählen androidDependencies dann Run :

Schritt 1

Zweitens wirst du so etwas sehen:

Schritt 2

Der Hauptgrund, warum ich das gepostet habe, war, dass es nicht einfach war zu wissen, wo man eine Task oder die oben genannten Befehle ausführen sollte. Das ist es also, wo man sie auch ausspricht.

SO, um grdle Befehl auszuführen:

Zuerst:

zuerst

Zweite:

zweite

Einfach wie es ist.

Das ist es.

Vielen Dank.

Falls jemand herausfindet, dass die Antwort von CommonsWare nicht auf das Android-Bibliotheksprojekt angewendet werden kann, hier ist das Snippet zu beheben

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

Sie werden Probleme finden

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

Wenn Sie compile project verwenden (‘: yourAndroidLibrary’) {exclude module: ‘support-v13’}

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

Ich habe diesen Fehler beim Upgrade auf ButterKnife 8.5.1 erhalten. Keine der anderen Antworten hier funktionierte für mich.

Ich habe gradle -q :app:dependencies , um den Baum zu sehen, und habe dann die JAR-Dateien gradle -q :app:dependencies , bis ich den Konflikt gefunden habe. Der Konflikt war, dass Butterknives Abhängigkeit von com.android.support:support-compat:25.1.0 eine Version der Accessibility-class enthält und com.android.support:support-v4:23.1.1 auch die class enthält.

Ich triggerse es, indem ich meine Abhängigkeit davon änderte:

 compile 'com.jakewharton:butterknife:8.5.1' 

zu diesem:

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

Es scheint die Operation von ButterKnife bisher nicht zu beeinflussen.

Edit: Es gibt eine bessere Lösung, um meine Android-Support-Bibliotheken auf Butterknives aufzurüsten:

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

Ich hatte das gleiche Problem und es scheint, dass meine App zu viele Methoden wegen der Bibliotheken hatte: http://developer.android.com/tools/building/multidex.html

Getriggers es mit:

 android { defaultConfig { ... multiDexEnabled = true } } 

Mehr hier Fehler: Ausführung fehlgeschlagen für Task ‘: app: dexDebug’. > command beendet mit einem Wert ungleich Null 2

 exclude module: 'support-v4' 

Würde für mich mit einer Projektabhängigkeit nicht funktionieren, der einzige Weg, wie ich es zur Arbeit bringen könnte, war über die folgende Syntax:

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

Wo: Android-SDK ist Ihr Projektname.

Ich hatte denselben Fehler, aber es war, weil ich kürzlich von v4 zu v13 gewechselt hatte. Also musste ich nur das Projekt säubern.

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 Standalone-Version.

So habe ich es behoben:

BAD build.gradle:

 dependencies { compile files('libs/android-support-v4.jar') compile files('libs/core-2.2.jar') compile files('libs/universal-image-loader-1.8.5-with-sources.jar') compile 'com.google.android.gms:play-services:3.2.65' } 

GUTE build.gradle:

 dependencies { // compile files('libs/android-support-v4.jar') // not needed compile files('libs/core-2.2.jar') compile files('libs/universal-image-loader-1.8.5-with-sources.jar') compile 'com.google.android.gms:play-services:3.2.65' } 

Hoffe es hilft jemandem 🙂

In meinem Fall wurde das Problem durch Versionsinkonsistenz verursacht:

 Build tools 25 compileSdk 24 targetSdk 24 Support library 24 

Die Lösung war einfach: Mach alles Version 25

Ein ähnliches Dex-Problem triggerse die Methode

gradle.build enthielt:

 compile files('libs/httpclient-4.2.1.jar') compile 'org.apache.httpcomponents:httpclient:4.5' compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1' 

Das Problem wurde behoben, als ich es entfernte

 compile files('libs/httpclient-4.2.1.jar') 

Meine Größe sieht jetzt so aus:

 apply plugin: 'com.android.application' android { compileSdkVersion 24 buildToolsVersion "24.0.3" defaultConfig { applicationId "com.mmm.ll" minSdkVersion 16 targetSdkVersion 24 useLibrary 'org.apache.http.legacy' } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } } dependencies { compile 'com.google.android.gms:play-services:6.1.+' compile files('libs/PayPalAndroidSDK.jar') compile files('libs/ksoap2-android-assembly-3.0.0-RC.4-jar-with-dependencies.jar') compile files('libs/picasso-2.1.1.jar') compile files('libs/gcm.jar') compile 'com.android.support:appcompat-v7:24.2.1' compile 'org.apache.httpcomponents:httpclient:4.5' compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1' } 

Es gab eine Redundanz in der JAR-Datei und im kompilierten Grapple-Projekt

Suchen Sie so genau nach Abhängigkeits- und JAR-Dateien mit denselben classn.

Und entfernen Sie die Redundanz.
Das hat für mich funktioniert.

Wenn Sie Ihr Projekt aus Eclipse importiert haben.

 1. The select project 2. Go to File -> **Project Structure** 3. Select app in **module** section on left hand panel 4. Select **Dependency** tab 5. Your able to see jars you have added in eclipse project for v4 and v13. 6. Remove that jar by clicking on minus sign at bottom after selection 7. Click on Plus sign select **Library Dependency** 8. Choose V4 and V13 if added 9. Press Ok and Clean and Rebuild your project 

Das Szenario, mit dem ich nach dem Import von Eclipse-Projekt in Android Studio konfrontiert wurde.

Hoffe das hilft..

Ich benutze com.google.android.gms:play-services-analytics:8.3.0 und android-support-v13.jar und konnte das android-support-v13.jar exclude module: 'support-v4' nicht erhalten exclude module: 'support-v4' funktioniert.

Was für mich funktionierte, war die Verwendung des android-support-v13 Artefakts anstelle der android-support-v13.jar Datei.

Dh statt

 dependencies { compile ('com.google.android.gms:play-services-analytics:8.3.0') compile files('libs/android-support-v13.jar') 

}

ich benutzte

 dependencies { compile ('com.google.android.gms:play-services-analytics:8.3.0') compile ('com.google.android:android-support-v13') 

}

Das Löschen aller Dateien aus dem Gradle-Cache hat mein Problem behoben.

unter Linux:

 cd ~/.gradle rm -R -f * 

Dies ist ein lästiges Problem, das einige Zeit dauern kann, um den Grundfall herauszufinden. Die Art und Weise, wie Sie fortfahren sollten, ist die Antwort von @CommonsWare.

Ich hatte dieses Problem kürzlich und fand es schwer zu lösen.

Mein Problem war, dass ich eine Bibliothek mit der “+” – Version in build.gradle einfügte. Neueste Version der Bibliothek enthielt eine der älteren Dex und Bang.

Ich kehrte zur älteren Version der Bibliothek zurück und triggerse sie.

Es ist gut, Ihre Android-Abhängigkeiten laufen zu lassen und zu sehen, was wirklich passiert. Es ist auch gut, in Ihrem Build-Ordner zu suchen.

Vor allem Android Studio 2.2 bietet in Build-functionen, um dieses Problem zu verfolgen.

Glückliche Coding Guys

Wechseln Sie in Android Studio zu Ihrer Datei build.gradle (überprüfen Sie die build.gradle-Dateien des Projekts und der Module), und suchen Sie nach doppelten Abhängigkeiten.

Löschen Sie diejenigen, die Ihr Projekt nicht benötigt.

Ich habe kompiliert “com.android.support:support-v4:18.0.+” in Abhängigkeiten entfernt, und es funktioniert

Schließlich habe ich es getriggers, diese Attribute auf der Modul-Gradle-Datei zu modifizieren

  1. compileSdkVersion 25
  2. targetSdkVersion 25
  3. kompiliere ‘com.android.support:appcompat-v7:+’
  4. kompiliere ‘com.android.support:recyclerview-v7:+’

Ich hatte das gleiche Problem, wenn ich meinem Projekt Projekt react-native-palette hinzufüge, hier ist meine Abhängigkeitsstruktur:

 ./gradlew app:dependencies +--- project :react-native-palette | +--- com.facebook.react:react-native:0.20.+ -> 0.44.2 | | +--- javax.inject:javax.inject:1 | | +--- com.android.support:appcompat-v7:23.0.1 | | | \--- com.android.support:support-v4:23.0.1 | | | \--- com.android.support:support-annotations:23.0.1 -> 24.2.1 ... | \--- com.android.support:palette-v7:24.+ -> 24.2.1 | +--- com.android.support:support-compat:24.2.1 | | \--- com.android.support:support-annotations:24.2.1 | \--- com.android.support:support-core-utils:24.2.1 | \--- com.android.support:support-compat:24.2.1 (*) +--- com.android.support:appcompat-v7:23.0.1 (*) \--- com.facebook.react:react-native:+ -> 0.44.2 (*) 

Ich habe viele Lösungen ausprobiert und konnte es nicht beheben, bis com.android.support:appcompat die com.android.support:appcompat -Version in android/app/build.gradle , ich wünschte, dies könnte helfen:

 dependencies { compile project(':react-native-palette') compile project(':react-native-image-picker') compile project(':react-native-camera') compile fileTree(dir: "libs", include: ["*.jar"]) // compile "com.android.support:appcompat-v7:23.0.1" compile "com.android.support:appcompat-v7:24.2.1" compile "com.facebook.react:react-native:+" } 

es scheint, dass mehrere Einträge kein großes Problem sind, Versionskonflikt ist

Habe es für einen compile file('...') Konflikt compile file('...') funktioniert, indem ich minSdkVersion auf 21 erhöht und multidex aktiviert habe. Ich bin mir nicht sicher, ob das die beste Lösung ist, aber die einzige Möglichkeit, um es in meinem Fall zum Laufen zu bringen.

Hinweis: Für die compile file('...') scheint es, dass Sie keine exclude einfügen können, so dass diese Option nicht verfügbar war.

Ich hatte das gleiche Problem und meine Lösung ändert die Support-Version ’27. + ‘(27.1.0) auf ’27 .0.1’

Ich hatte das gleiche Problem. In meinem Projekt hatte ich folgende Abhängigkeiten:

  • appcompat-v7
  • Android-Unterstützung-v13

Aus alten Gründen wurde das appcompat aus dem Google Maven Repo geholt, während der Android-Support ein lokales .jar war.

Als ich das herausfand und diese lokale Referenz durch eine Mavenreferenz ersetzte, triggerse es gerade mein Build-Problem.

Hier ist der Unterschied meiner App / build.gradle:

Bildbeschreibung hier eingeben

Ich habe alle meine Probleme getriggers, indem ich diese in project.properties eingefügt habe

 cordova.system.library.7=com.android.support:appcompat-v7:27.1.0 

Der folgende Fehler wurde empfangen

Ausführung fehlgeschlagen für Aufgabe ‘: app: transformDexArchiveWithDexMergerForDebug’.

com.android.build.api.transform.TransformException: com.android.dex.DexException: Mehrere Dex-Dateien definieren Landroid / support / constraint / ConstraintSet $ ​​1

Fix: Gehe zu Build -> Projekt bereinigen