Impossible de Fusionner Dex - Android Studio 3.0
Quand j'ai mis à jour mon Android Studio 3.0, dans l'étable, canal de et de couru le projet, j'ai commencé à obtenir l'erreur ci-dessous.
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
J'ai essayé le nettoyage et la reconstruction du projet, mais il ne fonctionne pas. Toute aide sera appréciée.
Niveau du projet de construction.gradle
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
classpath 'com.google.gms:google-services:3.1.0'
//NOTE: Do not place your application dependencies here; they belong
//in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
google()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
App niveau de la construction.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
applicationId "com.med.app"
minSdkVersion 21
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
resConfigs "auto"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
//appcompat libraries
compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:design:26.1.0'
//butterknife
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
//picasso
compile 'com.squareup.picasso:picasso:2.5.2'
//material edittext
compile 'com.rengwuxian.materialedittext:library:2.1.4'
//Retrofit & OkHttp & and OkHttpInterceptor & gson
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.google.code.gson:gson:2.8.2'
compile 'com.squareup.okhttp3:logging-interceptor:3.8.0'
//FirebaseUI for Firebase Auth
compile 'com.firebaseui:firebase-ui-auth:3.1.0'
}
apply plugin: 'com.google.gms.google-services'
J'ai essayé toutes les réponses, mais je suis incapable de résoudre cette erreur. S'il vous plaît aider.
- montrer
build.gradle
. stackoverflow.com/questions/46267621/unable-to-merge-dex - J'ai aussi essayé la solution de la question que vous avez lié. Aucun d'entre eux travaille.
- vous n'avez pas activé multidex, u besoin de
- J'ai aussi essayé activation multidex. Il n'a pas aidé.
- u peut essayer de mettre google() référentiel dans buildscript référentiel
- Essayé. Toujours la même erreur.
- Avez-vous créer une Application de classe?
- Nope, je n'ai pas créer de classe d'Application.
- stackoverflow.com/a/33430306/3395198
- Essayez de build gradle avec des informations détaillées options. Dans mon cas, j'ai détecté le problème, c'est une bibliothèque /libs. - Je le supprimer et le problème résolu.
- Pouvez vous s'il vous plaît coller votre la version complète.gradle fichier ici.
- J'ai ajouté la version complète.gradle fichier.
- U ne à trouver une solution ? J'ai toujours le même problème
- Nan 🙁
- Je suppose que vous n'utilisez pas tous les pots dans votre dossier lib?
- Oui, je ne suis pas à l'aide de tous les pots.
- Veuillez vérifier ma amélioration de la réponse. Espérons qu'il résoudre votre problème.
- Merci beaucoup, ça a fonctionné.
- Bienvenue.
Vous devez vous connecter pour publier un commentaire.
Ajouter explicitement la dépendance à
play-services-auth
avec votrefirebase-ui-auth
dépendance:C'est parce que
firebase-ui-auth
a une dépendance transitive deplay-services-auth
et doit être utilisé avec la version correspondante deplay-services-auth
. Veuillez voir cette explication.Les versions antérieures de l'outil build Gradle ne pas inclure les dépendances transitives donc maintenant des versions peut entrer en conflit avec d'autres
play-services
versions.Mon Problème Expliqué et Répondu (Au cas où quelqu'un veut savoir)
Lorsque vous mettez à niveau vers Android Studio 3.0 et mise à jour de l'outil build gradle version 3.0.0, la compilation des dépendances est maintenant fait différemment que dans les versions précédentes.
J'ai récemment rencontré le même problème. J'ai été en utilisant ces dépendances qui a bien fonctionné par le biais de Gradle version 2.3.3:
Après la mise à gradle-build-version 3.0.0, j'ai eu le même message d'erreur. Digint en elle, j'ai trouvé que la dépendance transitive de
httpmime
en conflit avec le fichierhttpclient-android
a été compris.Description
Laissez-moi vous expliquer cela en détail. Plus tôt, lors de l'utilisation gradle-outil-version 2.3.3, j'ai été en utilisant
httpclient-android
à extraire et à utiliser le nom de la classeorg.apache.http.entity.ContentType.java
L'expansion de l'dépendances transitives de
org.apache.httpcomponents:httpmime:4.3.6
montré qu'il aorg.apache.httpcomponents:httpcore:4.3.6
qui est le même kit que je voulais utiliser. Mais lors de la compilation ou de la synchronisation de la construction, il a été à l'exclusion deorg.apache.http.entity.ContentType.java
donc j'ai besoin d'ajouter cette dépendance qui comprendContentType.java
:Tout a bien fonctionné par la suite.
Une fois que j'ai mis à jour le gradle-build-version 3.0.0, les choses ont changé. Il comprenait maintenant toutes les dépendances transitives. Donc, lors de la compilation avec la dernière Android Studio avec gradle-construction de l'outil à la version 3.0.0, mon
ContentType.java
a été compilée à deux reprises. Une fois deorg.apache.httpcomponents:httpcore:4.3.6
(ce qui est implicite et transitive de la dépendance dehttpmime
) et à nouveau à partir deorg.apache.httpcomponents:httpclient-android:4.3.5.1
que j'utilisais auparavant.Pour résoudre ce problème, j'ai dû enlever l'existant
org.apache.httpcomponents:httpclient-android:4.3.5.1
de la dépendancehttpmime
allait lui-même chercher la classe pertinente nécessaire pour mon application.La solution à ma situation: utiliser uniquement les dépendances nécessaires et supprimer les
httpclient-android
Remarque que c'est seulement le cas pour moi. Vous aurez besoin de creuser dans votre propre dépendances et d'appliquer la solution en conséquence.
you need to dig into the classes your are having an issue with
Mais comment avez-vous découvert les classes sur lesquelles vous avez eu un problème avec? Avez-vous d'exécuter./gradlew dependencies
et de passer par toutes les dépendances transitives (marqué commexxx -> yyy
dans la sortie)?Tout d'abord, j'ai activé multidex comme suggéré dans les commentaires précédents.
Ensuite, si l'erreur persiste, ouvrez le Gradle Console (cliquez sur "Afficher la Sortie de la Console" icône à gauche de la section "Messages") et cliquez sur le lien pour recompiler avec Debug/Info/Pile options.
Cela permettra de montrer plus de détails sur l'erreur.
Dans mon cas, le message d'erreur "Impossible de fusionner dex" a été causé par des entrées en double
dans "com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0".
J'ai supprimé manuellement le conflit de la bibliothèque de mon projet et exécuté le "Projet de Reconstruction" (ce qui oblige à recharger la bibliothèque). Ceci a résolu le problème.
com.android.dex.DexIndexOverflowException
, malgré le fait que j'ai multidex activé et mon projet construit bien avant la mise à jour vers Android Plugin Gradle 3.0.J'ai eu cette erreur:
com.android.générateur de rapports.dexing.DexArchiveMergerException: Impossible de fusionner dex
et fini par changer mon gradle dans le but de résoudre ce problème.
app\build.gradle
.\construire.gradle
Ce n'est pas idéal, car il est de retour dans les fréquentations, mais c'est quelque chose qui a travaillé pour moi et m'là jusqu'à un éventuel patch est sorti.
Découvrez les dépendances dans votre construire.gradle (app)
si vous êtes à l'aide de 2 (ou plus) des bibliothèques avec le même nom et numéro de version différent.
Par exemple (dans mon cas):
Supprimer, puis nettoyer et reconstruire. Notez également que dépendances est à l'extérieur de buildscript.
ajouter cette ligne à la
:gradle
fichierj'ai le même problème
je me suis décidé à mettre de l':
dans buildscript->dépendances
construire.gradle
dans mon fichier j'ai:
Il suffit de Changer votre classpath pour :
classpath 'com.android.outils.construire:gradle:2.3.3'
et synchroniser votre Gradle.
Espère que cela aidera.
Parfois cette erreur se produit, quand même .jar fichier de bibliothèque est présent dans "libs" du dossier et dans le même temps, nous essayons d'obtenir le code source en ajoutant la ligne "compiler" dans l'app gradle fichier.
Tout cela, si nous supprimons ensuite nous pouvons surmonter cette erreur.
Espère que cela peut aider.
"tous les gsm bibliothèques"
Merci, il a aidé à résoudre mon problème, mais pas seulement le gsm bibliothèques, mais google bibliothèques doivent avoir la même version.
J'ai eu ce dexing erreur, car la com.android.support:recyclerview-v7 avait une version différente de celle de la com.android.support:appcompat-v7
Android studio montre ces lignes avec liséré rouge dans la construction.gradle fichier.
J'ai fait exact que l'idée de la capture d'écran ci-dessous, changé 11.0.4 à 11.8.0
il fonctionne très bien
Semble que cette erreur ont de nombreux scénarios. Dans mon cas était de 1,8 java compiler dans
build.gradle
(app):Je l'ai enlevé et l'erreur a disparu
J'ai changé le ci-dessous de 11.6.0 à 11.8.0 et cela a fonctionné.
Je vivais la même erreur avec Firebase de l'INTERFACE utilisateur de Base de données à la place. Même après l'activation de la multiDex, comme suggéré dans les autres réponses, j'étais encore à l'obtention de l'erreur. Puis je suis venu à savoir qu'il existe un besoin pour la Firebase de l'INTERFACE utilisateur et la Firebase Base de données de même les versions correspondantes donnés sur le Firebase de l'INTERFACE utilisateur GitHub.
Firebase de l'INTERFACE utilisateur GitHub
Ajouter ce votre gradle: mise en œuvre", com.android.support:multidex:1.0.0'
Propre projet et puis reconstruire.cela fonctionne
Cela peut aussi être trop tard, Mais je pense que j'ai une réponse trop. Basé sur mes essais récents, lors de la compilation de l'application, assurez-vous que vous n'avez pas un fichier jar et un
'implementation'('compile' for 3.0.1 > gradle)
le même paquet dans le même projet. Dans mon cas, j'ai euimplementation 'org.jsoup:jsoup:1.11.2'
etJsoup
jar dans le même projet. Erreur de débutant, mais, je l'ai appris.Pour ceux qui sont encore aux prises avec ce, plus récemment, et ont ajouté des composants. Ce qu'il fait pour moi a été d'ajouter:
compiler 'android.arch.cycle de vie:les extensions:1.0.0'
annotationProcessor 'android.arch.cycle de vie:un compilateur:1.0.0'
Qu'est-ce résolu, c'était de le mettre à jour à
compiler 'android.arch.cycle de vie:les extensions:1.1.1'
annotationProcessor 'android.arch.cycle de vie:un compilateur:1.1.1'
Espère que ça aide.
je pense que c'est parce que les différents bibliothèque varient même enfant de la bibliothèque, mais la version est différente donc exclure une bibliothèque de dépendance comme:
Dans mon cas, j'ai dû faire trois choses:
Comme je l'ai été à l'aide de firebase, assurez-vous que firebase et google play services a la même version.Initialement jouer à des services a enregistré une version inférieure.
Principalement en version 12.0.1 aidé
Définir ce en application du niveau de la construire.gradle
De nouveau en application du niveau de la construire.gradle, ajouter
Par ajouter le code suivant dans la construction.gradle(app module) de travail pour moi
c'est mon projet gradle
android {
compileSdkVersion 26
buildToolsVersion "27.0.3"
}