FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

【Unity】Admobとmobile backendのSDKが競合するときの解決法

f:id:mbaasdevrel:20190123144504p:plain

コミュニティに寄せられるUnity関係の質問で多いのが、AdmobとUnity SDKを一緒に利用する際の競合問題です。現時点での解決策として、こちらの記事で解説します。

競合する理由とその解決方法

UnityプラグインであるGoogle-Mobile-Ads-Unityとncmb_unityでは、バージョンが異なる幾つかのライブラリを指定しています。そのため、それぞれのプラグインがバージョンの異なるライブラリを使っているためにビルドエラーが発生している可能性が高いです。

たとえば、下記のバージョンを例として挙げます。

  • Google Mobile Ads Unity Plugin v3.15.1
  • ncmb_unity v4.0.0

この場合、それぞれのプラグインが下記ライブラリを利用し、バージョン差異が確認できます。 の場合、それぞれにて、下記のバージョンのライブラリを使用しています。

Google-Mobile-Ads-Unity-Plugin_v3.15.1 ncmb_unity_v4.0.0
support-compat com.android.support.support-compat-26.1.0.aar support-compat-26.0.2.aar
support-core-utils com.android.support.support-core-utils-26.1.0.aar support-core-utils-26.0.2.aar
support-v4 com.android.support.support-v4-26.1.0.aar support-v4-26.0.2.aar

このように異なるバージョンのライブラリ利用によるビルドエラーについては、バージョンの低い方 のライブラリを削除するとうまくいくことがあります。上記例で言えば、バージョン26.0.2のaarファイルを削除します。低いバージョンのライブラリを削除した後、再度ビルドを実行してください。

この方法はライブラリのバージョン同士が近い(マイナーバージョンの違い程度)場合に使えます。

それでもまだ解決しない場合

上記手順を行ってもなおビルドに失敗する際は次のステップになります。

各プラグインのAndroidManifestファイル内のminSdkVersionconfigを修正する

Google-Mobile-Ads-Unity と ncmb_unity のAndroidManifest にある minSdkVersionのバージョンが下記のように異なる場合は、同一バージョンにします。基本的に高い方に合わせます。

#Google Admob
<uses-sdk android:minSdkVersion="16"/>

#ncmb_unity
<uses-sdk android:minSdkVersion="14"/>

play-services-basement.properties が2箇所に存在するとのビルドエラーが発生した場合

この場合は Assets/Plugins/Android/play-services-basement-15.0.1.aar を削除してください。

おわりに

プラグインの競合問題はどのようなプラットフォームでも発生しますが、UnityはAndroidやiOSなど幅広いプラットフォームにも対応するために複雑になりやすく、その結果として競合しやすいと言えます。ぜひ記事を参考に皆さんの問題が解決することを期待します。

もし今後もエラーが出る、または別な問題で分からないことがあれば、コミュニティを活用してみてください!

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。