DexArchiveMergerExceptionでAndroidビルドエラー
プロジェクトに広告用SDKを追加したときによく出てくるこのエラー。
毎回ググってるのでいい加減自分でまとめた。
(2021-05-06 Unity2020.3以降については下部に追記あり)
環境
Unity 2019.1.7f1
Androidビルド
エラー内容
Execution failed for task ':transformDexArchiveWithExternalLibsDexMergerForRelease'. > com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: The number of method references in a .dex file cannot exceed 64K. Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html
https://developer.android.com/studio/build/multidex?hl=ja
アプリ、およびアプリの参照するライブラリが 65,536 メソッドを超えると、ビルドエラーが発生し、Android ビルド アーキテクチャの制限に達したことが示されます。
デフォルトだとメソッドの数に制限があるので、それを超えてビルドエラーになってる。
特に外部SDKを入れない限りは直面しないエラーだけど、外部SDKを入れるとすぐなる。
対応
https://developer.android.com/studio/build/multidex?hl=ja ↑にある通りやっていけばOK
AndroidのBuildSettings->CustomGradleTemplateをオンにする。
mainTemplate.gradleが作られるので、中身を編集する。
android { defaultConfig { ... multiDexEnabled true // この行を追加 } ... } dependencies { implementation 'com.android.support:multidex:1.0.3' //この行を追加 }
これでビルド通るようになります。
追記)Unity2020.3以降の場合
ちょっと対応変わります。 こちら参考に