Lorsque j'ai mis à jour mon Android Studio vers la version 3.0 dans le canal stable et que j'ai exécuté 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é de nettoyer et de reconstruire le projet, mais cela n'a pas fonctionné. Toute aide serait appréciée.
Niveau de projet build.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
}
Niveau de l'appli build.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 données mais je suis incapable de résoudre cette erreur. S'il vous plaît aider.
Ajoutez une dépendance explicite à play-services-auth
avec votre dépendance firebase-ui-auth
:
// FirebaseUI for Firebase Auth
compile 'com.firebaseui:firebase-ui-auth:3.1.0'
compile 'com.google.Android.gms:play-services-auth:11.4.2'
En effet, firebase-ui-auth
a une dépendance transitive à play-services-auth
et doit être utilisé avec la version correspondante de play-services-auth
. S'il vous plaît voir cette explication .
firebase-ui-auth
|--- com.google.firebase:firebase-auth
|--- com.google.Android.gms:play-services-auth
Les versions antérieures de l'outil de génération Gradle n'incluaient pas de dépendances transitives, de sorte que les versions peuvent maintenant entrer en conflit avec d'autres versions play-services
.
Mon problème expliqué et répondu (Au cas où quelqu'un voudrait savoir)
Lorsque vous effectuez une mise à niveau vers Android Studio 3.0 et mettez à jour la version de l'outil de génération de dégradés vers la version 3.0.0, la compilation des dépendances est désormais effectuée différemment des versions précédentes.
J'ai récemment rencontré le même problème. J'utilisais ces dépendances qui fonctionnaient bien avec Gradle version 2.3.3:
implementation 'org.Apache.httpcomponents:httpmime:4.3.6'
implementation 'org.Apache.httpcomponents:httpclient-Android:4.3.5.1'
Après la mise à niveau vers gradle-build-version 3.0.0, j'ai eu la même erreur. Digint dedans, j'ai trouvé que la dépendance transitive de httpmime
était en conflit avec le fichier httpclient-Android
était inclus.
Description
Laissez-moi vous expliquer cela en détail. Auparavant, lorsque j'utilisais gradle-tool-version 2.3.3, j’utilisais httpclient-Android
pour récupérer et utiliser la classe nommée org.Apache.http.entity.ContentType.Java
L’expansion des dépendances transitives de org.Apache.httpcomponents:httpmime:4.3.6
montrait qu’elle avait org.Apache.httpcomponents:httpcore:4.3.6
qui est le même paquet que je voulais utiliser. Mais lors de la compilation ou de la synchronisation de la construction, il excluait org.Apache.http.entity.ContentType.Java
et j’avais donc besoin d’ajouter cette dépendance qui inclut ContentType.Java
:
implementation 'org.Apache.httpcomponents:httpclient-Android:4.3.5.1'
Tout a bien fonctionné après ça.
Une fois que j'ai mis à niveau la version gradle-build-version vers la version 3.0.0, les choses ont changé. Il incluait maintenant toutes les dépendances transitives. Ainsi, lors de la compilation avec le dernier Android Studio avec la version 3.0.0 de Gradil-Build-Tool, mon ContentType.Java
était en cours de compilation deux fois. Une fois de org.Apache.httpcomponents:httpcore:4.3.6
(qui est une dépendance transitive implicite de httpmime
) et encore de org.Apache.httpcomponents:httpclient-Android:4.3.5.1
que j’utilisais auparavant.
Pour résoudre ce problème, je devais supprimer la dépendance existante org.Apache.httpcomponents:httpclient-Android:4.3.5.1
, car httpmime
irait lui-même chercher la classe appropriée requise pour mon application.
La solution à ma situation: n'utilisez que les dépendances requises et supprimez le httpclient-Android
implementation 'org.Apache.httpcomponents:httpmime:4.3.6'
Notez que c'est juste le cas pour moi. Vous devrez creuser vos propres dépendances et appliquer la solution en conséquence.
Tout d'abord, j'ai activé multidex comme suggéré dans les commentaires précédents.
Ensuite, si l'erreur persiste, ouvrez la console Gradle (cliquez sur l'icône "Afficher la sortie de la console" à gauche de la section "Messages"), puis sur le lien pour recompiler avec les options Debug/Info/Stack. Cela montrera plus de détails sur l'erreur.
Dans mon cas, l'erreur "Impossible de fusionner dex" était due à des entrées en double dans "com.jakewharton.picasso: picasso2-okhttp3-downloader: 1.1.0".
J'ai manuellement supprimé la bibliothèque en conflit de mon projet et exécuté le "Rebuild Project" (forçant à recharger la bibliothèque). Cela a résolu le problème.
J'ai eu cette erreur:
com.Android.builder.dexing.DexArchiveMergerException: impossible de fusionner dex
et a fini par changer mon grade afin de résoudre ce problème.
app\build.gradle
Android {
compileSdkVersion 25
//buildToolsVersion '26.0.2'
buildToolsVersion '25.0.3'//<< Changed back to old version before my studio 3.0 update
defaultConfig { ....
.\build.gradle
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.Android.tools.build:gradle:2.3.3' //<< Changed back to old version before my studio 3.0 update
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
Ce n'est pas idéal car c'est un retour en arrière, mais c'est quelque chose qui a fonctionné pour moi et devrait m'y amener jusqu'à ce qu'un correctif soit publié.
Vérifiez les dépendances dans votre build.gradle (app) si vous utilisez 2 (ou plus) bibliothèques avec le même nom et une version différente. Par exemple (dans mon cas):
implementation files('src/main/libs/support-v4-24.1.1.jar')
implementation 'com.Android.support:support-v4:27.0.2'
Retirez-en un, nettoyez-le et reconstruisez-le. Notez également que dépendances est en dehors de buildscript.
Android {
defaultConfig {
multiDexEnabled true
}
}
ajoute cette ligne au fichier :gradle
Parfois, cette erreur se produit lorsque le même fichier de bibliothèque .jar est présent dans le dossier "libs" et que nous essayons en même temps d'obtenir le code source en ajoutant la ligne "compile" dans le fichier de fichier d'application.
N'importe lequel de ces cas, si nous supprimons, nous pouvons surmonter cette erreur.
J'espère que cela peut être utile.
j'ai le même problème je l'ai résolu mis:
classpath 'com.google.gms:google-services:3.0.0'
dans buildscript-> dépendances
build.gradle
dans mon dossier j'ai:
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.Android.tools.build:gradle:3.0.0'
classpath 'com.google.gms:google-services:3.0.0'
}
}
Il suffit de changer votre chemin de classe pour:
chemin de classe 'com.Android.tools.build:gradle:2.3.3'
et servez votre diplôme.
J'espère que cela aidera.
"toutes les bibliothèques gsm" Merci, cela a aidé à résoudre mon problème, mais pas seulement les bibliothèques gsm, mais toutes les bibliothèques google doivent avoir la même version. J'ai eu cette erreur dexing, parce que le com.Android.support:recyclerview-v7 avait une version différente de la com.Android.support:appcompat-v7
Le studio Android affiche ces lignes avec un soulignement rouge dans le fichier build.gradle.
J'ai fait exactement comme l'indice dans la capture d'écran ci-dessous, changé 11.0.4 à 11.8.0
compile 'com.google.Android.gms:play-services-base:11.8.0'
compile 'com.google.Android.gms:play-services:11.8.0'
ça fonctionne bien
À la place, je rencontrais la même erreur avec la base de données d'interface utilisateur Firebase. Même après l'activation de multiDex comme suggéré dans les autres réponses, j'entendais toujours l'erreur. J'ai ensuite appris qu'il était nécessaire que l'interface utilisateur de Firebase et la base de données Firebase aient les mêmes versions que celles indiquées dans le référentiel Firebase UI de GitHub.
On dirait que cette erreur a plusieurs scénarios. Dans mon cas, il y avait une 1.8 Java compiler dans build.gradle
(app):
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}
J'ai enlevé et l'erreur a disparu
Pour ceux qui luttent encore avec cela plus récemment et qui ont ajouté des composants. Ce qui m'a causé cela a été d'ajouter:
compile 'Android.Arch.lifecycle: extensions: 1.0.0' annotationProcessor 'Android.Arch.lifecycle: compilateur: 1.0.0'
Qu'est-ce que ça a résolu de le mettre à jour pour
compile 'Android.Arch.lifecycle: extensions: 1.1.1' annotationProcessor 'Android.Arch.lifecycle: compilateur: 1.1.1'
J'espère que ça t'as aidé.
J'ai changé le ci-dessous de 11.6.0 à 11.8.0 et cela a fonctionné.
compile 'com.google.Android.gms:play-services-ads:11.6.0'
implementation 'com.google.Android.gms:play-services-ads:11.8.0'
Ce lien a résolu le problème pour moi.
Je mets d’abord les dépendances dans mon fichier pubspec.yaml sur
dependencies:
flutter:
sdk: flutter
cloud_firestore: ^0.8.2
et a lancé flutter packages get
dans le terminal de mon IDE.
De plus, je devais changer la version minimale du SDK cible:
De plus, je devais ouvrir Android/app/build.gradle
, puis ajouter la ligne suivante comme dernière ligne du fichier: apply plugin: 'com.google.gms.google-services'
Ensuite, j'ai dû ouvrir Android/build.gradle
, puis à l'intérieur de la balise buildscript, ajouter une nouvelle dépendance:
buildscript {
repositories {
// ...
}
dependencies {
// ...
classpath 'com.google.gms:google-services:3.2.1' // new
}
}
Après cela, mon application a finalement été exécutée sur l'émulateur Android.
Le lien a une procédure plus complète si vous êtes bloqué.
Dans mon cas, je devais faire trois choses:
Comme j'utilisais Firebase, assurez-vous que Firebase et Google Play Services avaient la même version. Initialement, Play Services avait une version inférieure. Surtout la version 12.0.1 aidée
Définir ce niveau de build.gradle de l'application
Android {
multiDexEnabled true
}
Encore une fois dans le niveau de build.gradle de l'application, ajoutez
compileOptions{
sourceCompatibility 1.8
targetCompatibility 1.8
}
je pense que c'est parce que la bibliothèque diffère dépend de la même bibliothèque enfant mais que la version est différente, excluez donc la dépendance d'une bibliothèque comme:
api (rootProject.ext.dependencies["bindingRecyclerView"]) {
exclude group: 'com.Android.support'
}
Ajoutez ceci: votre implémentation 'com.Android.support:multidex:1.0.0'
Nettoyer le projet et ensuite reconstruire.
Cela pourrait aussi être trop tard, mais je pense avoir aussi une réponse. Sur la base de mes essais récents, lors de la compilation de l'application, assurez-vous de ne pas avoir de fichier jar et une'implementation'('compile' for 3.0.1 > gradle)
du même package dans le même projet. Dans mon cas, j’avais implementation 'org.jsoup:jsoup:1.11.2'
et Jsoup
jar dans le même projet. Erreur de recrue mais, j'ai appris.
En ajoutant ce code suivant dans build.gradle (module d'application), travaillez pour moi
Android {
defaultConfig {
multiDexEnabled true
}
}
dependencies {
androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.1'
implementation 'com.Android.support:support-v4:26.1.0'
}