unityroomに投稿したゲームにAdmobを追加してアプリ化するときにエラーが出てしまうことがありました。
今回はその修正方法について紹介したいと思います。
最初に
今回ゲームジャムに参加した作品でアプリ化を試みていたところ
Admobを入れた際にエラーで見舞われました。
ちなみにAdmobの導入は下記を参考にしてください。

開発環境
OS:Windows10
バージョン:Unity 2019.2.12f
エラー内容
こんな感じのエラーです。
java.lang.RuntimeException: java.lang.RuntimeException: Duplicate class android.support.v4.app.InotificationSideChannel found in modules classes…
Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules classes.jar…

英語のエラーが大量に出ているけど内容を読んでも
正直よくわからない…(800個は凄まじい汗)
ただ調べているとAdmobではありませんが同じような問題に見舞われている方が居て
以前NCMBのプラグインを導入していたというのを見かけました。
そして色々調べているときに問題の原因がわかりました。
原因はNCMB?
先に結論を言いますと「NCMBが入った状態でAdmob」を追加しようとしたからです。
もともとNCMBというunityroomで提供されているランキング機能を実装していました。
その手順で導入したNCMBに入っていたGoogle関連のライブラリが競合して
ビルド時にエラーが出続けていたようですね…
対処方法
シンプルに古いライブラリと新しいライブラリが競合しているだけなので
新しいライブラリに統一すれば動くはずです。
なので不要な古いライブラリ(NCMBに含まれていた)を一旦削除することにしました。
まず最初に生成されてしまっているライブラリ関連のファイルを一旦掃除します。
下記の写真のように一旦作成されているファイルを削除することができます。
エディタメニューから下記の順番で選択します。
- Assets
- External Dependency Manager
- AndroidResolver
- Delete Resolved Libraries
すると実際競合しているライブラリが入っているフォルダは「Assets→Plugins→Android」です。
ここを確認すると掃除する前よりファイルが減っているのですが
まだNCMBで入ってしまったgoogle関連の古いファイルを削除する必要があります。
自分は下記の2種類を残して、他ライブラリファイルをすべて削除しました。
削除後はこんな感じです。
改めてResolveをしておく
そして最後に必要なファイルを生成するためResolveする必要があります。
手順は先程とほぼ同じでエディタのメニューから
- Assets
- External Dependency Manager
- AndroidResolver
- Resolve
で可能です。
早速apkを作成してみる

できるかなぁ…
と心配していたところ
エラーが消えて問題なく動きました!
ファイルを削除したのでNCMBのランキング機能に問題が出るかなと心配していましたが
特に自分が利用している範囲では問題はなさそうです。
最後に
いかがでしたでしょうか?
私の場合はこれでひとまずビルドできたので
この状態で少しの間、様子をみたいと思います。
もし同じようにNCMBが入ったプロジェクトにAdmob追加でエラーが出た方は
参考にしていただけますと幸いです。
ではここまでお読みいただきありがとうございました。



コメント