it-swarm.com.de

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

Wenn ich gradle assembleDebug von der Kommandozeile aus laufe, 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 für v4 grep sehe, 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 verblüfft, wie die r7-Bibliothek irgendwie eingebunden ist. Ich habe gradle clean ausgeführt und erscheint immer dort, wenn ich assembleDebug erneut ausführen möchte.

Wenn ich für r7 im Build-Verzeichnis grep, sehe ich es in der Datei: 

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

Wenn ich V13 nicht einbeziehe, werden andere Dinge nicht kompiliert.

Aber enthält v13 keine v4-unterstützende Bibliothek?

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

Ich habe mir die gradle-Datei von gradleplease.appspot.com besorgt.

Durch das Entfernen von Play Services wird dies nicht behoben. 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'
}
204
xrd

Führen Siegradle -q dependencies(odergradle -q :projectName:dependencies) aus, um einen Abhängigkeitsbericht zu erstellen. 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 exclude-Direktive, um diese Abhängigkeit zu blockieren. In meinem Fall kommt es aus meiner CWAC-Kamera-Bibliothek, und daher verwende ich:

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-Anweisung angibt, welche Version Sie tatsächlich möchten)

Das sollte klar werden, 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
296
CommonsWare

Ich habe einen ähnlichen Fehler durch Hinzufügen des folgenden Codes zu meiner build.gradle -Datei im Android-Block behoben.

Android {
    dexOptions {
        preDexLibraries = false
    }
}
123
mike.tihonchik

Beachten Sie auch, dass Sie Ihre Android-Abhängigkeiten sehen können, indem Sie in Ihre Android Studio-Ansicht wechseln und das Ziel "Android-Abhängigkeiten" auswählen. 

Noch ein Tipp: Ich hatte dieses Problem, bis ich die v4 support lib aus dem libs-Ordner im Projekt und meinen zugehörigen Modul-/Bibliotheksprojekten entfernt habe. 

33
Ed Manners

Da 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:

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

 step 1

Zweitens Sie werden so etwas sehen:

 Step 2

Der Hauptgrund dafür war, dass es nicht einfach war zu wissen, wo eine gradle-Task oder die oben aufgeführten Befehle ausgeführt werden sollen. Dies ist also der Ort, an dem sie auch entschuldigt werden.

SO, um den Gradle-Befehl auszuführen:

Zuerst:

 first

Zweite:

 second

So einfach es ist.

Das ist es. 

Vielen Dank.

32
MBH

Beim Upgrade auf ButterKnife 8.5.1 wurde diese Fehlermeldung angezeigt. Keine der anderen Antworten funktionierte für mich.

Ich habe gradle -q :app:dependencies verwendet, um den Baum zu sehen, und habe dann JAR-Dateien durchgesehen, bis ich den Konflikt gefunden habe. Der Konflikt bestand darin, dass die Abhängigkeit von butterknife von com.Android.support:support-compat:25.1.0 eine Version der Accessibility-Klasse enthält und com.Android.support:support-v4:23.1.1 auch die Klasse enthält.

Ich löste 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 beeinträchtigen.

Edit: Es gibt eine bessere Lösung, meine Android-Support-Bibliotheken auf ButterKnife-Versionen umzustellen:

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

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

kompiliere (project (': yourAndroidLibrary')) { Modul ausschließen: 'support-v13' }

Sie werden Probleme finden 

Nicht unterstützte DSL-Methode von Gradle gefunden: 'exclude ()'

wenn Sie .__ verwenden, kompilieren Sie project (': yourAndroidLibrary') { Modul ausschließen: 'support-v13' }

Die Unterschiede sind das Armband "(" und ")" vor "project".

9
Tony Thompson

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

Gelöst mit: 

Android {
   defaultConfig {
   ...
   multiDexEnabled = true
   }
}

Mehr hier Fehler: Ausführung für Task ': app: dexDebug' fehlgeschlagen. > Befehl wurde mit Nicht-Null-Exit-Wert 2 beendet

8
Giannis P
exclude module: 'support-v4'

Bei einer Projektabhängigkeit würde ich nicht funktionieren. Die einzige Möglichkeit, wie ich es schaffen könnte, war über folgende Syntax:

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

Dabei gilt: Android-SDK ist Ihr Projektname.

7
Pellet

Ich hatte den gleichen Fehler, aber es war, weil ich kürzlich von v4 zu v13 gewechselt war. Also musste ich nur das Projekt reinigen.

6
ashishduh

Ich hatte den gleichen Fehler bei einem alten Projekt. Mein Fehler war, dass die Support-Bibliothek zweimal enthalten war: Einmal in Google-Play-Services lib und einmal als Standalone.

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'
}

GOOD 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 :-)

5
voghDev

In meinem Fall wurde das Problem durch Versionsinkonsistenz verursacht:

Build tools 25
compileSdk 24
targetSdk 24
Support library 24

Die Lösung war einfach: Make version 25

3
WindRider

Eine ähnliche dex-Problemlösung wurde behoben

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 entfernte

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

Mein Gradle 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'
}

In der JAR-Datei und im kompilierten Gradle-Projekt befand sich eine Redundanz  

Suchen Sie also genau nach Abhängigkeits- und JAR-Dateien mit denselben Klassen.

Und Redundanz entfernen.
.__Das hat bei mir funktioniert.

3
shiny vn

Dies ist ein ärgerliches Problem, das einige Zeit in Anspruch nehmen kann, um den Root-Fall herauszufinden. Wie Sie vorgehen sollten, ist @CommonsWare answer. 

Ich war vor kurzem mit diesem Problem konfrontiert und fand es schwer zu lösen. 

Mein Problem war, dass ich eine Bibliothek von "+" - Version in build.gradle aufgenommen habe. Die neueste Version der Bibliothek enthielt ältere Dex- und Bang-Versionen.

Ich habe auf eine ältere Version der Bibliothek zurückgegriffen und diese gelöst.

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

Android Studio 2.2 bietet in Build-Funktionen, um dieses Problem zu verfolgen. 

Happy Coding Guys

2
Arun C

Wechseln Sie in Android Studio zu Ihrem build.gradle (überprüfen Sie die Projekt- und Modulbuild.gradle-Dateien) und suchen Sie nach doppelten Abhängigkeiten. 

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

2
KadoLakatt

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

unter Linux: 

cd ~/.gradle  
rm -R -f *
2
Yuliia Ashomok

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, das ich nach dem Import des Eclipse-Projekts in Android Studio erlebt habe.

Hoffe das hilft.. 

2

Ich verwende com.google.Android.gms:play-services-analytics:8.3.0 und Android-support-v13.jar und konnte exclude module: 'support-v4' nicht zum Laufen bringen.

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

Das heißt anstatt

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')

}

2
barry

Ich entfernte com.Android.support:support-v4:18.0.+'in Abhängigkeiten kompilieren, und es funktioniert 

1
albert

Ich hatte das gleiche Problem und meine Lösung ändert die Supportversion '27. + '(27.1.0) in '27 .0.1' 

0
Mingyong Gu

Ich konnte das Problem in meinem reaktiven nativen Projekt lösen, indem ich es einfach hinzufügte

configurations {
        all*.exclude group: 'com.Android.support', module: 'support-compat'
        all*.exclude group: 'com.Android.support', module: 'support-core-ui'
    }

am Ende meiner Android\app\build.gradle-Datei

0
Yusuf Khan

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

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

Aus älteren Gründen wurde der appcompat aus dem Google Maven-Repo geholt, während der Android-Support eine lokale .jar-Datei war.

Als ich das herausfand und diese lokale Referenz durch eine Maven-Referenz ersetzte, wurde mein Build-Problem gelöst.

Hier ist der Unterschied meiner App/build.gradle:

 enter image description here

0
kall2sollies

Ich hatte das gleiche Problem, als ich react-native-palette zu meinem Projekt hinzufügte. Hier ist mein Abhängigkeitsbaum:

./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 ich die com.Android.support:appcompat-Version in Android/app/build.gradle geändert habe. Ich wünschte, dies kann 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

0
matrixer

Ich habe alle meine Probleme gelöst, indem ich dies in project.properties aufgenommen habe

cordova.system.library.7=com.Android.support:appcompat-v7:27.1.0
0
eatmeimadanish

Ich habe folgenden Fehler erhalten

Ausführung fehlgeschlagen für Task ': 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 -> Clean Project

0
Ragunath CR

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 nur so könnte ich es in meinem Fall zum Laufen bringen.

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

0
Ben Kleywegt

Zum Schluss habe ich es gelöst, diese Attribute in der Modul-Gradle-Datei zu ändern

  1. compileSdkVersion 25
  2. targetSdkVersion 25
  3. 'com.Android.support:appcompat-v7:+' kompilieren
  4. 'com.Android.support:recyclerview-v7:+' kompilieren
0
Val Martinez