Unity6でAdmob(UPM)とFireBaseを入れた際のAndroidビルドエラーの解決

Unity

Unity6xでAdmobをUPM経由、FireBaseのアナリティクスとFCMを.unitypackageで入れた際にほぼ1週間ほど躓いて死にかけたので備忘録。

各種環境

  • Unity:Ver6000.0.13f1-preview
  • Admob:Google Mobile Ads for Unity: [9.2.0] (UPM経由)
  • Firebase
    • Google Analytics: [12.1.0]
    • Firebase Cloud Messaging: [12.1.0]

解決方法

いくつか手順ありますが、とりあえず効果がありそうなものから記載します。

方法1:AndroidManifest.xmlの修正

自身のAndroidManifestと見比べて修正してみてください。

おそらく”<property android:name=”android.adservices.AD_SERVICES_CONFIG”の部分が不足してエラーが出ていることがほとんどかと。

下みたいなエラーの場合は上記のpropertyタグを追加したら大丈夫
https://issuetracker.google.com/issues/327696048

方法2:UPMとFirebaseのプラグインの導入順を考えてみる

まずは工程のみ書くので、補足が必要な箇所は詳しい方法をちょこちょこ下に書きます

  1. Admob -> Firebase関連の順番でインストールしてみる (*1)
    • ※Firebaseインポート時は念の為External DependencyManagerは含まないようにしてください
  2. 再インストール後に一旦Unityを閉じて、プロジェクトルートのLibraryディレクトリを削除
  3. Unityを再起動
  4. ビルドターゲットをAndroidに再設定
  5. ProjectSettings->Player->Publish SettingsのBuildの下記項目にチェック
    • Custom Main Gradle Template
    • Custom Gradle Properties Template
  6. Unity->Assets->External DependencyManager -> Android Resolver -> Resolveを実施
  7. ビルド
    • mainGradleをアップデートする?とかなんかダイアログが出たらとりあえずenableかOKで大丈夫です
    • それでもなんかエラーが出たらまたUnityを閉じてLibralyディレクトリを削除して再起動でビルド(なんかゴミが残ることがあるっぽい)

*1.各ファイルの削除に関して

AdmobのUPMのインストール手順にあるように、いくつかディレクトリを消しておく必要があります。
具体的には下記のディレクトリとファイルを先に消しておくといいです。


やり方は普通に消してもいいですが、私は画像のようにUnity->Assets->External DependencyManager -> Version Handler -> Uninstal…でFirebase関連を消しました。
AdmobはPackageManagerから削除し、上で説明した手順でインポートを再実施。

消すやつ

解決までに起きていたエラーや現象

他に似たような現象で困っている人がいたときの検索用で一応残します

  • iOSビルドはできるがAndroidビルド時にフリーズする(エラーは特に出ない)
    • 多分SDKの競合やゴミが残っている(Firebase側のExternal DependencyManagerとAdmobのExternal DependencyManagerが入ってたときにフリーズしまくりました)
  • “Attribute property#android.adservices.AD_SERVICES_CONFIG@resource value”みたいなエラーが出まくる
    • AndroidManifestを上で説明している形式にしたらなんとかなりました
    • Admobのメタデータが抜けていたり、Firebaseと競合していたり

コメント