カロリーメイトください

Barbaroi Ware(バルバロイ・ウェア)という名前でアプリ開発してます

【Unity】NCMB(ニフクラ mobile backend)とAdMobのプラグイン競合を解消できるかもしれない方法

概要

UnityのプロジェクトにNCMBAdMobプラグインを同時に入れてAndroid用に?ビルドしようとすると以下のようなエラーが起こることがあります。

f:id:yjkym:20191116184510j:plain

エラーログ(一部)

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下のファイルをすべて削除します。 f:id:yjkym:20191116190256p:plain:w400

その後自動的にプラグインの再DLが始まります。 f:id:yjkym:20191116190612p:plain:w400

不足しているファイルがあるので再度GoogleMovileAdsのパッケージをインポートします。 f:id:yjkym:20191116190900p:plain

続いて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

f:id:yjkym:20191116192500p:plain:w400

パッケージのバージョンによって微妙に違うと思うので、適宜読み替えるなり、↓の方法を試したりしてみてください。

私の環境下ではこの方法でビルドが通り、ニフクラの機能も今のところ問題なく使えています。

競合しているプラグインが特定できない場合

プラグインのバージョンアップデートなどにより競合しているプラグインが特定できない場合は、力技ですがNCMBのパッケージに含まれるプラグインを1つずつインポートして、ビルドをかけていくことで問題が発生するプラグインを特定できるかもしれません。
この際、ビルドは問題なく通ってもAndroid実機で起動できないということがあるので、必ずビルドだけでなく、実機でも正常に起動することを確認してください。

この方法を行う場合は、既存のプロジェクトに影響しないように専用のサンプルプロジェクトを作成して実行されることをおすすめします。

誰かの参考になれば幸いです。カロリーメイトください。

参考

blog.mbaas.nifcloud.com