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;
Réponses
Trop de publicités?Pour Android Studio 3.0, ce que j'ai fait est d'ajouter ceci à mon gradle :
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 :
- Supprimer le
./gradle
dans votre projet - Supprimer tous les les dossiers de construction et le cache gradle . J'ai exécuté la commande suivante :
Comment ?
cd ~/[your project root folder] && find . -name build -exec rm -rf {} \; && rm -rf $HOME/.gradle/caches/
En supposant que votre fichiers de configuration gradle sont dans le $HOME/.gradle
dossier.
- Dans Android Studio, allez dans
File > Invalidate caches / Restart...
et a invalidé les caches et l'a redémarré.
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 s'est produite au moment de la construction :
Duplicate zip entry [httpcore-4.4.1.jar
et le problème 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 égale ou supérieure à 21
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 d'Application et surchargez la méthode attachBaseContext.
public class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
3) Mentionnez la classe créée dans le manifeste de la balise d'application.
<application
android:name=".MyApplication"
.
.
.
</application>