AdMob と Nifty Cloud のプッシュ通知を共存させる [Unity]

下記の条件でNifty Cloudのプッシュ通知を使おうとしてドハマりしてしまったので、対策した方法をメモに残しておきます。

環境:
・Unity 5.4.3f1
・Google Mobile Ads Unity Plugin 3.0.5

上記環境で mobile backend のUnity用SDK「NCMB.2.2.0」をインストールして、Android用にビルドしたところ、

Uncaught translation error: java.lang.IllegalArgumentException: already added: ~~

という内容のエラーが出てビルドで出来ませんでした。
調べてみると、クラスファイルが重複しているらしく、いろいろ調べつつ試してみました。

結果としては、下記の方法でビルドが成功し、AdMobとPush通知も動作確認できました。
※いろいろ試している内に偶然できたその場しのぎな方法なので、もしこの問題でお困りの方は参考までにということで。。

まず「NCMB.2.2.0」でインポートした下記ファイルを削除します。
 ・Assets/Plugins/Android/android-support-v4.jar
 ・Assets/Plugins/Android/google-play-services.jar
 ・Assets/Plugins/Android/res/values/version.xml

次に
・Assets/PlayServicesResolver/Editor/AdMobDependencies.cs
のAdMobDependencies関数内に下記のコードを追加します。

svcSupport.DependOn("com.google.android.gms", "play-services-gcm", "LATEST");

次に、Unityのメニューから下記を実行します。
Assets > Google Play Services > Resolve Client Jars

すると下記画像のように「play-services-gcm-10.0.1.aar」が出来ます。

この状態でUnityからAndroid用にビルドすると成功して、AdMobもPush通知も動作しました。

【補足】
もし、「play-services-gcm-10.0.1.aar」はやっぱりいらないということになると、aarファイルを削除してもすぐに同ファイルが復活してしまいますので、復活させないようにするには下記の手順が必要です。

 ・「play-services-gcm-10.0.1.aar」を削除する。
 ・「Assets/PlayServicesResolver/Editor/AdMobDependencies.cs」で先ほど追加したコードを削除
 ・「ProjectSettings/GoogleDependencyAdMobUnity.xml」のそれらしい箇所を削除

ABOUT

GAMES

サッカーピープル
スライムパズルストーリー

倉庫番ライクパズルと
冒険のゲームです
※制作中

止まるなコロッコ2
止まるなコロッコ2

止まるなコロッコの
続編です
iOS版 / Android版

止まるなコロッコ
止まるなコロッコ

石ころのコロッコが転がるように
セッティングする脱出ゲームです
iOS版 / Android版

コロッコトロッコ
コロッコトロッコ

石ころのコロッコを転がしながら
サラリーマンを会社へ運ぶゲームです
iPhone版 / Android版

TAGS

SNS

FEEDS