はじめに
UnityのAndroid gradleビルドで下画像のようなDexArchiveMergeExceptionが出た時の
対処法を示します。
なぜこのエラーが出るのか
Unityで色々なpluginなどを入れていくと、プラグイン用のgradleのファイルであるmainTemplate.gradleなどに書いてあるダウンロードモジュールと、他のpluginのjarファイルや、たのgradleファイルのテンプレートと衝突してしまうことが起こり、このエラーが起きてしまうようである。
解決方法
- 手順1
Unityでビルドする際、Build Settingのところで、Export Projectにチェックを入れ Android Studio用のプロジェクトを生成する - 手順2
Android Stdudioで先ほど出力したプロジェクトを開いておく、Android StuidoのPreferencesのところでKotlin Compilerの所を選択し 下の画像のように
Additional command line parameters
に
--info
-stacktrace
を追加する
- 手順3
手順2で開いていたプロジェクトをMake Projectでビルドすると下の画像のようなエラー(今回の場合は、support.v4ライブラリが原因であったことがわかる)が表示され、モジュールが多重定義されていたことがわかる。 - 手順4
Unityのほうに戻り、mainTemplateを編集するなり、重複しているjarなりaarなりを削除する。
終わりに
今回のAndroid Stduioのほうにビルドでしてみてエラーを解決する方法は、他のエラーを除去
するテクニックにも使えるかもしれません。