web-dev-qa-db-ja.com

複数のdexファイルがLandroid / support / design / widget / CoordinatorLayout $ LayoutParamsを定義します

プロジェクトで複数の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;
17
Nisar Ahmad

ライブラリのバージョンを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'
39
Rafa0809

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 詳細情報。

2
MGupt

Gradleプラグイン(com.Android.tools.build:gradle)を3.2.0から3.3.2に更新すると、問題が解決しました。

0
Vaiden