web-dev-qa-db-fra.com

Erreur de compilation Android Studio - Plusieurs fichiers dex définissent Landroid/support/v4 /

Je ne parviens pas à construire mon projet sous Android Studio. Je reçois l'erreur suivante:

Error:Android Dex: [RaditazAndroid] Unable to execute DX
Error:Android Dex: [RaditazAndroid] com.Android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
Error:Android Dex: [RaditazAndroid] at com.Android.dx.merge.DexMerger.readSortableTypes(DexMerger.Java:592)
Error:Android Dex: [RaditazAndroid] at com.Android.dx.merge.DexMerger.getSortedTypes(DexMerger.Java:550)
Error:Android Dex: [RaditazAndroid] at com.Android.dx.merge.DexMerger.mergeClassDefs(DexMerger.Java:531)
Error:Android Dex: [RaditazAndroid] at com.Android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.Java:168)
Error:Android Dex: [RaditazAndroid] at com.Android.dx.merge.DexMerger.merge(DexMerger.Java:186)
Error:Android Dex: [RaditazAndroid] at com.Android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.Java:300)
Error:Android Dex: [RaditazAndroid] at com.Android.dx.command.dexer.Main.run(Main.Java:232)
Error:Android Dex: [RaditazAndroid] at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Error:Android Dex: [RaditazAndroid] at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:39)
Error:Android Dex: [RaditazAndroid] at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:25)
Error:Android Dex: [RaditazAndroid] at Java.lang.reflect.Method.invoke(Method.Java:597)
Error:Android Dex: [RaditazAndroid] at org.jetbrains.Android.compiler.tools.AndroidDxRunner.runDex(AndroidDxRunner.Java:147)
Error:Android Dex: [RaditazAndroid] at org.jetbrains.Android.compiler.tools.AndroidDxRunner.main(AndroidDxRunner.Java:276)
Error:Android Dex: [RaditazAndroid] at com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.Java:121)

Cependant, cette erreur ne signifie rien pour moi. Il ne fournit pas d'indices sur l'endroit où je devrais commencer à réparer mon projet. Quelqu'un at-il rencontré quelque chose de similaire?

24
IgorGanapolsky

Pour quiconque est intéressé, j'ai résolu mon propre problème. Mon erreur est que j'ai collé Android-support-v4.jar et google-play-services.jar dans tous les dossiers lib du module de mon projet (mon projet est constitué de 3 modules). Ce que je devais faire à la place était de coller ces fichiers uniquement dans le dossier lib de mon module principal. Les autres modules les référenceraient automatiquement.

44
IgorGanapolsky

Loin d'Android Studio, j'ai ouvert le projet dans le Finder/workspace et j'ai procédé comme suit: 

1- Dossier MyProject -> build -> intermediary -> dex-cache -> cache.xml et a supprimé tous les éléments support-v4.jar.

2- Également en dehors d'Android Studio, je suis allé à tous les modules de mon projet -> dossier lib -> et j'ai également supprimé support-v4.jar.

Puis nettoyé le projet et exécuté et cela a fonctionné grâce à Dieu :) 

16
fullMoon

J'ai eu la même erreur. Résolu en ajoutant au fichier gradle.

    dependencies{
        compile 'com.google.Android.gms:play-services:8.3.0'
        compile 'com.Android.support:appcompat-v7:23.1.0'
        compile 'com.Android.support:support-v4:23.1.0'
    } 
6
BMS

Si vous avez:

compile 'com.Android.support:recyclerview-v7:24.2.0'
compile('com.Android.support:appcompat-v7:23.2.0') { exclude group: 'com.google.Android', module: 'support-v4' }

dans votre projet, ajoutez aussi:

compile 'com.Android.support:support-v4:24.2.0'

ou

compile 'com.Android.support:design:24.2.0'
6
careful7j

Dans mon cas, le problème était dans la version du module SDK. Je l'ai changé de 2.2 à 4.4 et le problème a été résolu.

3
3akat

J'ai eu la même erreur.

Supprimer une bibliothèque (twitter.jar) pour le dossier my-project/app/libs m'a aidé.

Puis nettoyé le projet et exécuté et cela a fonctionné.

3
shoaib shaikh

Nettoyer et reconstruire était tout ce qu'il fallait pour que le mien commence à travailler.

3
tg2

J'ai utilisé une approche différente en fusionnant le dossier res ABS avec mon dossier res et en utilisant ActionBarSherlock.jar en tant que bibliothèque globale.

Fonctionne bien jusqu'à présent et espérons que cela aidera quelqu'un! Mais c’est un hack, car j’en avais marre de faire beaucoup de choses et je ne peux pas utiliser Gradle car certains des autres développeurs utilisent Eclipse ADT sans Gradle.

La cause principale du problème est l'utilisation d'Android-support-v4 en ABS et de mon projet, ce qui complique le fonctionnement de DEX.

2
Gayan Pathirage

J'ai eu le même problème dans Android Studio 2.3, dans mon cas, j'avais un mélange de numéros de version qui a jeté la construction, j'ai changé:

dependencies {
    compile 'com.google.Android.gms:play-services-wearable:7.5.0'
    compile 'com.google.Android.gms:play-services-analytics:7.5.0'
    compile 'com.google.Android.gms:play-services-drive:8.4.0'
}

à

dependencies {
    compile 'com.google.Android.gms:play-services-wearable:8.4.0'
    compile 'com.google.Android.gms:play-services-analytics:8.4.0'
    compile 'com.google.Android.gms:play-services-drive:8.4.0'
}
1
Christian Weaves

Pour d'autres, se demandant pourquoi ce problème persiste encore, même en faisant toutes les autres choses suggérées, cela peut aider.

Pour moi le problème a commencé quand j'ai ajouté Glide library

dependencies {
  .........
  implementation 'com.github.bumptech.glide:glide:4.8.0'
  .........
}

et j'avais déjà ajouté.

implementation 'com.Android.support:design:26.1.0'

Ce qui contredisait quelque part la bibliothèque de support de Glide.

Solution: Supprimez ou rétrogradez votre version de support Glide.

 implementation 'com.github.bumptech.glide:glide:4.0.0'
0
vikas kumar