Error:Java.lang.RuntimeException: Java.lang.RuntimeException: com.Android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Error:Java.lang.RuntimeException: com.Android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Error:com.Android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Error:com.Android.dex.DexException: Multiple dex files define Lcom/google/zxing/integration/Android/IntentResult;
Pour Android Studio 3.0, j'ai ajouté ceci à mon diplôme:
multiDexEnabled true
Et ça a marché!
Exemple
Android {
compileSdkVersion 25
buildToolsVersion '26.0.2'
defaultConfig {
applicationId "com.xx.xxx"
minSdkVersion 15
targetSdkVersion 24
versionCode 9
versionName "1.0"
multiDexEnabled true //Add this
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-Android-optimize.txt'), 'proguard-rules.pro'
}
}
}
J'ai donc résolu ce problème en procédant comme suit:
./gradle
à l'intérieur de votre projet.Comment ?
cd ~/[your project root folder] && find . -name build -exec rm -rf {} \; && rm -rf $HOME/.gradle/caches/
En supposant que vos fichiers de configuration de gradle se trouvent dans le dossier $HOME/.gradle
.
File > Invalidate caches / Restart...
, invalide les caches et le redémarre.Vous devriez pouvoir trouver la cause de cette erreur en inspectant vos dépendances avec gradle et en recherchant les doublons comme celui-ci: ./gradlew -q app:dependencies
Dans mon cas, l’erreur suivante se produisait au moment de la construction:
_Duplicate Zip entry [httpcore-4.4.1.jar
_
et cela a été résolu en faisant ceci dans mon _build.gradle
_:
_implementation ('me.dlkanth:stetho-volley:1.0') {
exclude group: 'org.Apache.httpcomponents'
}
_
Si votre minSdkVersion est 21 ou supérieur
Android {
defaultConfig {
multiDexEnabled true
}
}
si votre minSdkVersion est de 20 ou moins
1) vous devez ajouter la bibliothèque suivante dans les dépendances
dependencies {
compile 'com.Android.support:multidex:1.0.1'
}
2) Créez une classe Java, puis étendez-la à partir de Application et substituez la méthode attachBaseContext.
public class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
) Mentionnez la classe créée à l'intérieur du manifeste dans la balise d'application.
<application
Android:name=".MyApplication"
.
.
.
</application>
Vérifiez la dernière version de vos dépendances. Il s'agit généralement d'une incohérence avec la version de vos dépendances.
1.Construisez> Nettoyez le projet 2. Reconstruisez votre projet
Recherchez dans le journal détaillé la dépendance à l'origine du problème de fusion et mettez-le à jour. Répétez la même chose pour chaque dépendance.
J'ai rencontré le même problème dans Android Studio 3.0.1, j'ai essayé tous les cas possibles, mais rien ne fonctionnait pour moi, comme mentionné ci-dessus, enfin je l'ai résolu par
Solution1:
.gradle
situé dans C:\Users\YourComputerName\.gradle
pas à partir de .gradle
de l'application) _Il téléchargera tous les fichiers nécessaires et les ajoutera à votre chemin de construction
Solution2:
En effet, s’il existe un fichier jar en double déjà défini dans le fichier build.gradle
, le problème est résolu.
Cela a résolu le problème pour moi. Cela peut aider les autres ..
Cette erreur peut avoir plusieurs raisons. Pas de nettoyage et de reconstruction ou quelque chose comme ça a fait le travail pour moi.
Pour moi le problème était la dépendance:
compile 'org.jetbrains:annotations-Java5:15.0'
Je l'ai enlevé et tout a bien fonctionné.
Changer "compiler" en "compileOnly" c'est ce qui a fonctionné pour moi.
J'ai essayé d'autres commentaires sur l'élimination de Gradle et de Bla Bla Bla, mais en ajoutant multiDexEnabled true
en résolvant mon problème, j'ai découvert que mon apk avait atteint la méthode Over 64K.
Réf.: https://developer.Android.com/studio/build/multidex.html )
Dans mon cas, le coupable était SendGrid lib, a ajouté ceci et cela a été corrigé:
compile 'com.github.danysantiago:sendgrid-Android:1',{
exclude group: 'org.Apache.httpcomponents', module: 'httpclient'
}
J'utilise Android Studio 3.0.1 et je rencontrais le même problème. Si les autres ne répondent pas, essayez ceci:
Outils -> Android -> Synchroniser un projet avec des fichiers Gradle
Cela a fonctionné pour moi projet de synchronisation avec Gradle Files
J'utilise la version 3.0.0 de Studio. Dans mon cas, il n'y avait que la solution: j'ai supprimé les anciens JAR du dossier "libs" de mon projet: il s'agissait du paquet "ksoap2" avec dépendances. Les paquets obtenus avec gradle n'entrent généralement pas en conflit, du moins si vous utilisez les plus populaires. Mais un ancien JAR dans le dossier libs peut écraser votre construction s'il inclut toutes ses dépendances.
J'utilise Android Studio 3.0.1 Build # AI-171.4443003, créé le 9 novembre 2017.
Je supprime le fichier jar du dossier libs. Et ça marche bien pour moi