プロジェクトで複数のdexファイルがエラーを定義しています。
build.gradleでもこれらの2つのタグを使用しています
dexOptions {
preDexLibraries = false
}
defaultConfig {
multiDexEnabled true
}
それでもこのエラーが発生します。
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;
ライブラリのバージョンを27.1.0
に更新して、問題を解決してください。
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'
build.gradleファイルで、multidexを有効にし、multidexライブラリを依存関係として追加します(以下を参照)。
Android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
}
...
}
dependencies {
compile 'com.Android.support:multidex:1.0.3'
}
"multiDexEnabled = true"
を追加すると、新しいサポートライブラリバージョンではデフォルトで依存関係が自動的に追加されますが、何らかの理由で古いサポートバージョンをサポートする場合は、コンパイルするために手動で依存関係を含める必要があります。
これにより、Multiple dex files define Landroid/support/v13/view/DragAndDropPermissionsCompat
エラーとその他の16個のエラーが一緒に削除されます。
リンクを考慮してください: https://developer.Android.com/studio/build/multidex 詳細情報。
Gradleプラグイン(com.Android.tools.build:gradle)を3.2.0から3.3.2に更新すると、問題が解決しました。