概要
UnityのプロジェクトにNCMBとAdMobのプラグインを同時に入れてAndroid用に?ビルドしようとすると以下のようなエラーが起こることがあります。
エラーログ(一部)
CommandInvokationFailure: Gradle build failed.
︙
com.android.builder.dexing.DexArchiveBuilderException: com.android.builder.dexing.DexArchiveBuilderException: Failed to process C:\Users\gladi.gradle\caches\transforms-1\files-1.1\firebase-analytics-impl-16.0.0.aar\313beebe99c27b5bfd4380490d1979b2\jars\classes.jar
︙
これはそれぞれのパッケージに含まれるプラグインが競合していることで発生することが多いようです。
このエラーが起こった時、私の環境下でビルドが通った方法を書き留めておきます。
環境
- Unity 2018.4.1f1 Personal
- NCMB.4.0.3
- GoogleMobileAds-v4.1.0
解決方法
Assets/Plugins/Android下のファイルをすべて削除します。
その後自動的にプラグインの再DLが始まります。
不足しているファイルがあるので再度GoogleMovileAdsのパッケージをインポートします。
続いてNCMBのパッケージをインポートしますが、インポートする際に以下のファイルを除外します。
- firebase-analytics-impl-16.0.0.aar
- firebase-common-16.0.0.aar
- firebase-messaging-17.1.0.aar
- play-services-base-15.0.1.aar
- play-services-basement-15.0.1.aar
- play-services-measurement-base-15.0.0.aar
- play-services-tasks-15.0.1.aar
- support-compat-26.0.2.aar
- support-core-utils-26.0.2.aar
パッケージのバージョンによって微妙に違うと思うので、適宜読み替えるなり、↓の方法を試したりしてみてください。
私の環境下ではこの方法でビルドが通り、ニフクラの機能も今のところ問題なく使えています。
競合しているプラグインが特定できない場合
プラグインのバージョンアップデートなどにより競合しているプラグインが特定できない場合は、力技ですがNCMBのパッケージに含まれるプラグインを1つずつインポートして、ビルドをかけていくことで問題が発生するプラグインを特定できるかもしれません。
この際、ビルドは問題なく通ってもAndroid実機で起動できないということがあるので、必ずビルドだけでなく、実機でも正常に起動することを確認してください。
この方法を行う場合は、既存のプロジェクトに影響しないように専用のサンプルプロジェクトを作成して実行されることをおすすめします。
誰かの参考になれば幸いです。カロリーメイトください。