web-dev-qa-db-fra.com

Plusieurs fichiers dex définissent Landroid / support / design / widget / CoordinatorLayout $ LayoutParams

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;
17
Nisar Ahmad

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'
39
Rafa0809

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.

2
MGupt

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.

0
Vaiden