【Unity・2022年度版】NCMBとAdmobのAndroidプラグインの競合を解決する

Unity
マイケル
マイケル
みなさんこんにちは!
マイケルです!!
エレキベア
エレキベア
クマ〜〜〜
マイケル
マイケル
今回は
NCMBとAdmobプラグインの競合解決
についてのメモです!
マイケル
マイケル
Unityで個人ゲーム開発する場合に、
広告 -> Google Admob
ランキング実装 -> NCMB
という選択をする人も多いかと思うのですが、
各unitypackageをそのままインポートしてビルドすると・・・
20220330 01
マイケル
マイケル
このようにビルドエラーが発生することがあります。
エレキベア
エレキベア
見たくないクマ・・・
マイケル
マイケル
2年前くらいにこの組み合わせで開発した時にも
同じようなエラーが出た記憶があるのですが、
2022年3月現在でも発生するようだったので解決方法を載せておきます!
エレキベア
エレキベア
もはや定番クマね
スポンサーリンク

Androidの競合解決

マイケル
マイケル
今回使用したプラグインとUnityのバージョンは下記になります。

プラグインの競合

マイケル
マイケル
エラーメッセージの量が多いので最初はパニックになるかと思いますが、
よく見ると下記のようにDuplicate class(クラスが重複している)と出力されていることが分かります。
  java.lang.RuntimeException: Duplicate class android.support.v4.app.INotificationSideChannel found in modules 	 androidx.core.core-1.6.0-runtime.jar (:androidx.core.core-1.6.0:) and 	core-1.1.0-runtime.jar (:core-1.1.0:)
  Duplicate class androidx.collection.ArrayMap found in modules 	 androidx.collection.collection-1.0.0.jar (androidx.collection.collection-1.0.0.jar) and 	collection-1.1.0.jar (collection-1.1.0.jar)
  Duplicate class com.google.android.gms.actions.ItemListIntents found in modules 	com.google.android.gms.play-services-basement-17.6.0-runtime.jar (:com.google.android.gms.play-services-basement-17.6.0:) and 	play-services-basement-17.1.1-runtime.jar (:play-services-basement-17.1.1:)
  Duplicate class com.google.android.gms.auth.api.signin.GoogleSignInAccount found in modules 	com.google.android.gms.play-services-base-17.6.0-runtime.jar (:com.google.android.gms.play-services-base-17.6.0:) and 	play-services-base-17.0.0-runtime.jar (:play-services-base-17.0.0:)
  java.lang.RuntimeException: Duplicate class androidx.legacy.content.WakefulBroadcastReceiver found in modules 	androidx.legacy.legacy-support-core-utils-1.0.0-runtime.jar (:androidx.legacy.legacy-support-core-utils-1.0.0:) and 	androidx.legacy.legacy-support-core-utils-1.0.0-runtime.jar (:legacy-support-core-utils-1.0.0:)
  Duplicate class com.google.android.gms.tasks.CancellationToken found in modules 	com.google.android.gms.play-services-tasks-17.2.1-runtime.jar (:com.google.android.gms.play-services-tasks-17.2.1:) and 	play-services-tasks-17.0.0-runtime.jar (:play-services-tasks-17.0.0:)
↑重複エラーメッセージ
マイケル
マイケル
そのため、エラーが出ているプラグインをログから抽出して片方を削除すると
エラーが解決されます!
20220330 04↑重複プラグインを洗い出して削除する
エレキベア
エレキベア
NCMBとAdmobのどちらにも
同じプラグインが入っていたということクマね
マイケル
マイケル
一度で全て競合しない場合があるので、
その時は数回、ビルド→競合解決を繰り返しましょう!
マイケル
マイケル
今回の場合、最終的に削除したプラグインは下記になります。
  • core-1.1.0.aar
  • collection-1.1.0.jar
  • play-services-basement-17.1.1.aar
  • play-services-base-17.0.0.aar
  • legacy-support-core-utils-1.0.0.aar
  • play-services-tasks-17.0.0.aar
マイケル
マイケル
基本的にバージョンが低い方のプラグインを削除するようにしました。
これでビルドが通るようになっているはずです!
エレキベア
エレキベア
ちょろかったクマ〜〜〜

おわりに

マイケル
マイケル
というわけで今回はNCMBとAdmobの競合解決でした!
どうだったかな?
エレキベア
エレキベア
最初は焦ったクマがよく見ると簡単だったクマ
マイケル
マイケル
バージョンが変わると今回と同じように解決できないこともあるし、
複数プラグインを使用すると似たような競合はよく起こります。
その際にはエラーメッセージをよく見て対処するようにしましょう!
エレキベア
エレキベア
心得たクマ
マイケル
マイケル
それでは今日はこの辺で!
アデュー!!
エレキベア
エレキベア
クマ〜〜〜〜

【Unity・2022年度版】NCMBとAdmobのAndroidプラグインの競合を解決する 〜完〜


↓NCMBを使用したランキング実装についてはこちら!

コメント