Je reçois plusieurs fichiers dex définissant une erreur dans mon projet.
J'utilise également ces deux balises dans build.gradle
dexOptions {
preDexLibraries = false
}
defaultConfig {
multiDexEnabled true
}
mais toujours cette erreur.
Information:Gradle tasks [:app:assembleDebug]
Error:Error converting bytecode to dex:
Cause: com.Android.dex.DexException: Multiple dex files define Landroid/support/design/widget/CoordinatorLayout$LayoutParams;
Error:com.Android.dex.DexException: Multiple dex files define Landroid/support/design/widget/CoordinatorLayout$LayoutParams;
Error: at com.Android.dx.merge.DexMerger.readSortableTypes(DexMerger.Java:661)
Error: at com.Android.dx.merge.DexMerger.getSortedTypes(DexMerger.Java:616)
Error: at com.Android.dx.merge.DexMerger.mergeClassDefs(DexMerger.Java:598)
Error: at com.Android.dx.merge.DexMerger.mergeDexes(DexMerger.Java:171)
Error: at com.Android.dx.merge.DexMerger.merge(DexMerger.Java:198)
Error: at com.Android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.Java:61)
Error: at com.Android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.Java:36)
Error: at Java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.Java:1424)
Error: at Java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.Java:289)
Error: at Java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.Java:1056)
Error: at Java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.Java:1692)
Error: at Java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.Java:157)
Error:Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.
> com.Android.build.api.transform.TransformException: com.Android.dex.DexException: Multiple dex files define Landroid/support/design/widget/CoordinatorLayout$LayoutParams;
Mettez à jour les versions de la bibliothèque pour 27.1.0
Résoudre le problème pour moi.
compile 'com.Android.support:appcompat-v7:26.1.0'
compile 'com.Android.support:design:26.1.0'
compile 'com.Android.support:appcompat-v7:26.1.0'
compile 'com.Android.support:mediarouter-v7:26.1.0'
compile 'com.Android.support:recyclerview-v7:26.1.0'
compile 'com.Android.support:cardview-v7:26.1.0'
compile 'com.Android.support:support-v13:26.1.0'
compile 'com.Android.support:support-v4:26.1.0'
À:
compile 'com.Android.support:appcompat-v7:27.1.0'
compile 'com.Android.support:design:27.1.0'
compile 'com.Android.support:appcompat-v7:27.1.0'
compile 'com.Android.support:mediarouter-v7:27.1.0'
compile 'com.Android.support:recyclerview-v7:27.1.0'
compile 'com.Android.support:cardview-v7:27.1.0'
compile 'com.Android.support:support-v13:27.1.0'
compile 'com.Android.support:support-v4:27.1.0'
dans le fichier build.gradle, activez multidex et ajoutez la bibliothèque multidex en tant que dépendance, comme indiqué:
Android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
}
...
}
dependencies {
compile 'com.Android.support:multidex:1.0.3'
}
Par défaut sur les nouvelles versions de bibliothèque de support lorsque vous ajoutez "multiDexEnabled = true"
, sa dépendance est ajoutée automatiquement, mais pour une raison quelconque, si vous souhaitez prendre en charge les anciennes versions de support, vous devez inclure la dépendance manuellement pour qu'elle soit compilée.
Cela supprimera Multiple dex files define Landroid/support/v13/view/DragAndDropPermissionsCompat
erreur et 16 autres erreurs.
Considérez le lien: https://developer.Android.com/studio/build/multidex pour des informations détaillées.
La mise à jour du plugin gradle (com.Android.tools.build:gradle) de 3.2.0 à 3.3.2 a résolu le problème pour moi.