Si je cours à gradle assembleDebug
partir de la ligne de commande, je reçois soudainement 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 v4, je vois deux fichiers dans mon dossier de build.
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 fichier gradle comprend uniquement cette bibliothèque de support:
compile 'com.android.support:support-v13:19.0.0'
Je suis perplexe quant à la façon dont la bibliothèque r7 est incluse en quelque sorte. J'ai couru gradle clean
et il apparaît toujours là lorsque je réexécute assembleDebug.
Si je grep pour r7 dans le répertoire de construction, je le vois dans le fichier:
Binary file build/exploded-bundles/ComGoogleAndroidGmsPlayServices4030.aar/classes.jar matches
Si je n'inclus pas la v13, alors d'autres choses ne se compilent pas.
Mais la v13 n'inclut-elle pas la bibliothèque de support de la v4?
Est-ce une incompatibilité entre le bundle AAR des services de jeu et la bibliothèque v13?
J'ai attrapé le fichier gradle sur gradleplease.appspot.com.
La suppression des services de jeu ne le résout pas; même erreur.
Mes dépendances dans 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'
}
Réponses:
Exécutez
gradle -q dependencies
(ougradle -q :projectName:dependencies
) pour générer un rapport de dépendance. Vous devriez voir d'oùr7
vient, comme:Ensuite, utilisez la
exclude
directive pour bloquer cette dépendance. Dans mon cas, cela vient de ma bibliothèque CWAC-Camera, et donc j'utilise:(où la deuxième
compile
déclaration indique quelle version vous voulez réellement)Cela devrait clarifier les choses, comme vous le verrez si vous exécutez à nouveau le rapport de dépendance:
la source
gradle dependencies
semble ne pas signaler les dépendances ajoutées aveccompile files('libs/example.jar')
libs/*.jar
dépendances avec un module en commun, aucune n'est disponible comme artefact. Existe-t-il un moyen d'effectuer une inspection de dépendance / exclusion de classe similaire?compile project(':foo')
encompile(project(':foo')) { exclude module: 'support-v4' }
. Notez la parenthèse.J'ai résolu une erreur similaire en ajoutant le morceau de code suivant à mon fichier build.gradle dans le bloc Android.
la source
Puisqu'une image vaut mille mots
Pour faciliter et accélérer la réalisation de cette tâche avec des débutants comme moi. voici les captures d'écran qui montrent la réponse postée par @ edsappfactory.com qui a fonctionné pour moi:
Ouvrez d' abord la vue Gradle sur le côté droit d'Androidstudio, dans l'élément de votre application, allez à
Tasks
puisAndroid
cliquez avec le bouton droitandroidDependencies
puis choisissezRun
:Ensuite, vous verrez quelque chose comme ceci:
La principale raison pour laquelle j'ai posté ce qu'il n'était pas facile de savoir où exécuter un
gradle
tâche ou les commandes affichées ci-dessus. C'est donc là que les excuser également.SO, pour exécuter la commande gradle:
Première:
Seconde:
Aussi simple que cela soit.
C'est tout.
Je vous remercie.
la source
Notez également que vous pouvez voir vos dépendances Android, en allant dans votre vue Gradle d'Android Studio et en sélectionnant la cible "androidDependencies".
Un autre conseil: je rencontrais ce problème jusqu'à ce que je supprime la bibliothèque de support v4 du dossier libs à la fois dans le projet et mes projets de module / bibliothèque associés.
la source
J'ai commencé à obtenir cette erreur lors de la mise à niveau vers ButterKnife 8.5.1. Aucune des autres réponses ici n'a fonctionné pour moi.
J'avais l'habitude
gradle -q :app:dependencies
de voir l'arbre, puis j'ai regardé les fichiers JAR jusqu'à ce que je trouve le conflit. Le conflit était que la dépendance de butterknife surcom.android.support:support-compat:25.1.0
contient une version de la classe d'accessibilité, etcom.android.support:support-v4:23.1.1
contient également la classe.Je l'ai résolu en changeant ma dépendance de ceci:
pour ça:
Cela ne semble pas affecter le fonctionnement de ButterKnife jusqu'à présent.
Edit: Il existe une meilleure solution, qui consistait à mettre à niveau mes bibliothèques de support Android pour correspondre à celles de ButterKnife:
la source
Au cas où quelqu'un découvrirait que la réponse de CommonsWare ne pouvait pas être appliquée au projet de bibliothèque Android, voici l'extrait à corriger
compile (project (': yourAndroidLibrary')) {exclude module: 'support-v13'}
Vous trouverez des problèmes
si vous utilisez le projet de compilation (': yourAndroidLibrary') {exclure le module: 'support-v13'}
Les différences sont le bracelet "(" et ")" avant "projet" .
la source
Ne fonctionnerait pas pour moi avec une dépendance de projet, la seule façon de le faire fonctionner était via la syntaxe suivante:
Où: Android-SDK est le nom de votre projet.
la source
J'ai eu le même problème et il semble que mon application avait trop de méthodes à cause des bibliothèques: http://developer.android.com/tools/building/multidex.html
Résolu avec:
Plus ici Erreur: Échec de l'exécution pour la tâche ': app: dexDebug'. > la commande s'est terminée avec une valeur de sortie non nulle 2
la source
J'ai eu cette même erreur mais c'était parce que j'avais récemment changé de l'utilisation de la v4 à la v13. Donc tout ce que j'avais à faire était de nettoyer le projet.
la source
J'ai eu la même erreur sur un projet hérité. Ma faute était que la bibliothèque de support a été incluse deux fois: une fois à l'intérieur de la bibliothèque google-play-services, et une autre en tant que autonome.
Voici comment je l'ai corrigé:
BAD build.gradle:
BON build.gradle:
J'espère que cela aide quelqu'un :-)
la source
J'utilise
com.google.android.gms:play-services-analytics:8.3.0
et je n'aiandroid-support-v13.jar
pas puexclude module: 'support-v4'
travailler.Ce qui a fonctionné pour moi, c'est d'utiliser l'
android-support-v13
artefact plutôt que leandroid-support-v13.jar
fichier.C'est à dire au lieu de
}
j'ai utilisé
}
la source
Dans mon cas, le problème était dû à une incohérence de version :
La solution était simple: Make everything version 25
la source
Une méthode similaire de résolution des problèmes dex
gradle.build contenait:
Le problème a été résolu lorsque j'ai supprimé
Mon gradle ressemble maintenant à:
Il y avait une redondance dans le fichier JAR et le projet gradle compilé
Recherchez donc attentivement les fichiers de dépendance et les fichiers jar ayant les mêmes classes.
Et supprimez la redondance.
Cela a fonctionné pour moi.
la source
Si vous avez importé votre projet depuis Eclipse .
Le scénario que j'ai rencontré après l'importation du projet Eclipse dans Android studio.
J'espère que cela t'aides..
la source
Il s'agit d'un problème ennuyeux, qui peut prendre un certain temps pour découvrir le cas racine. La façon dont vous devez procéder est la réponse @CommonsWare.
J'ai récemment rencontré ce problème et j'ai eu du mal à le résoudre.
Mon problème était que j'incluais une bibliothèque par version "+" dans build.gradle. La dernière version de la bibliothèque contenait l'un des anciens dex et bang.
Je suis revenu à une ancienne version de la bibliothèque et je l'ai résolue.
Il est bon d'exécuter vos dépendances android et de voir ce qui se passe réellement. Il est également bon de rechercher dans votre dossier de construction.
Surtout Android Studio 2.2 fournit des fonctionnalités de construction pour suivre ce problème.
Happy Coding Guys
la source
Dans Android Studio, accédez à votre build.gradle (vérifiez les fichiers build.gradle du projet et des modules) et recherchez les dépendances en double.
Supprimez ceux dont votre projet n'a pas besoin.
la source
La suppression de tous les fichiers du cache Gradle a résolu mon problème.
sous Linux:
la source
J'ai supprimé la compilation «com.android.support:support-v4:18.0.+» dans les dépendances, et cela fonctionne
la source
J'ai pu résoudre le problème dans mon projet natif React en ajoutant simplement
à la fin de mon fichier android \ app \ build.gradle
la source
Enfin, je l'ai résolu en modifiant ces attributs sur le fichier de module gradle
la source
J'ai eu le même problème lors de l'ajout
react-native-palette
à mon projet, voici mon arbre de dépendances:J'ai essayé de nombreuses solutions et je n'ai pas pu le réparer, jusqu'à ce que je change la
com.android.support:appcompat
versionandroid/app/build.gradle
, je souhaite que cela puisse aideril semble que les entrées multiples ne soient pas un gros problème, la non-concordance de version est
la source
compile file('...')
Je l'ai fait fonctionner pour un conflit en augmentant minSdkVersion à 21 et en activant le multidex. Je ne sais pas si c'est la meilleure solution, mais la seule façon de le faire fonctionner dans mon cas.Remarque: car
compile file('...')
il semble que vous ne puissiez pas insérer deexclude
clause, cette option n'était donc pas disponible.la source
J'ai eu le même problème, et ma solution change la version de support '27. + '(27.1.0) en '27 .0.1'
la source
J'ai eu le même problème. Dans mon projet, j'avais les dépendances suivantes:
Pour des raisons héritées, l'application compatible a été récupérée à partir du référentiel Google Maven, tandis que le support android était un .jar local.
Lorsque j'ai compris cela et remplacé cette référence locale par une référence maven, cela a juste résolu mon problème de construction.
Voici la différence de mon application / build.gradle:
la source
J'ai résolu tous mes problèmes en l'ajoutant à project.properties
la source
Reçu l'erreur suivante
L'exécution a échoué pour la tâche ': app: transformDexArchiveWithDexMergerForDebug'.
Correction: allez dans Build -> Clean Project
la source