214 votes

Plusieurs fichiers de dex définissent Landroid/soutien/v4/accessibilityservice/AccessibilityServiceInfoCompat

Si j'exécute gradle assembleDebug à partir de la ligne de commande, je suis tout d'un coup se cette erreur:

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)

Si je grep pour la v4, je vois deux fichiers à l'intérieur de mon dossier de création.

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

Mon gradle fichier ne comprend que ce soutien de la bibliothèque:

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

Je suis perplexe quant à la façon dont le r7 bibliothèque est incluse en quelque sorte. J'ai couru gradle clean et il est toujours là quand j'exécute à nouveau assembleDebug.

Si je grep pour r7 à l'intérieur du répertoire de construction, je le vois à l'intérieur du fichier:

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

Si je ne comprend pas v13, puis d'autres choses ne compile pas.

Mais ne pas v13 inclure v4 bibliothèque de prise en charge?

Est-ce une incompatibilité entre les services de l'AAR bundle et la v13 bibliothèque?

J'ai attrapé le fichier à partir de gradle gradleplease.appspot.com.

Retrait de jouer à des services ne permet pas de le résoudre; même erreur.

Mon dépendances à l'intérieur de construire.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'
}

305voto

CommonsWare Points 402670

Exécutez gradle -q dependencies (ou gradle -q :projectName:dependencies) pour générer un rapport de dépendance. Vous devriez voir où r7 vient de, tels que:

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

Ensuite, utilisez l' exclude directive pour bloquer cette dépendance. Dans mon cas, cela vient de mon CWAC-Appareil photo de la bibliothèque, et donc j'utilise:

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

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

(d'où le deuxième compile déclaration indique quelle version vous voulez)

Qui devrait clairement les questions, comme vous le verrez si vous exécutez le rapport de dépendance, de nouveau:

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

123voto

mike.tihonchik Points 1239

J’ai résolu errror similaire en ajoutant des morceau de code suivant dans mon fichier build.gradle dans le bloc d’android.

33voto

Note vous pouvez également voir vos dépendances android, à partir de votre point de vue Android Studio Gradle, en sélectionnant la cible « androidDependencies ».

Encore un Conseil : J’ai eu ce problème, jusqu'à ce que j’ai enlevé la v4 appui lib depuis le dossier libs dans le projet et de mon projet (s) / Bibliothèque de modules connexes.

6voto

ashishduh Points 1843

J’ai eu cette même erreur, mais c’était parce que j’avais changé récemment d’utiliser v4 à v13. Donc tout ce que je devais faire était propre au projet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X