脱力駆動開発記

ゲームアプリを作るエンジニアの技術メモ

MENU

【Unity】DexArchiveMergerExceptionでAndroidビルドエラー

f:id:cocokyoro:20200411030822p:plain

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をオンにする。 f:id:cocokyoro:20200411020226p:plain mainTemplate.gradleが作られるので、中身を編集する。

android {
        defaultConfig {
            ...
            multiDexEnabled true // この行を追加
        }
        ...
    }

    dependencies {
      implementation 'com.android.support:multidex:1.0.3' //この行を追加
    }

これでビルド通るようになります。

追記)Unity2020.3以降の場合

ちょっと対応変わります。 こちら参考に

forum.unity.com