【UE5】AndroidアプリにFirebaseを組み込んだら広告を使用している判定になった

## はじめに
AndroidアプリにFirebase Analyticsを組み込んでGoogle Play Consoleにアップロードしたところ、広告は全く使っていないのに広告IDの申告を更新しなさいとエラーが出てしまいました。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987446/75643634-54a6-373c-4f0b-4fd402e02ed4.png)


本記事では、広告IDの使用申告を更新することなくこのエラーを回避する方法を解説します。

## 開発環境
- Windows11
- UE5.1.0
- [Firebase - Features](https://www.unrealengine.com/marketplace/ja/product/firebase-features)（有料です）
- 広告を使用していないモバイルプロジェクト

## 原因
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987446/337a1482-d3fa-ef6e-edaf-cce64b0f76fc.png)
この画像に答えが書いてありますが、AndroidManifestに広告を使用するパーミッション`com.google.android.gms.permission.AD_ID`が追加されているのが原因です。
追加した覚えは微塵もありませんが、[この記事](https://qiita.com/Nkzn/items/326ad03e358b5d3fbafc)を見る限り、どうやらFirebaseのSDKはデフォルトで広告IDを収集するようになっているようです。
私が購入したプラグインも例外ではなく、Firebase AdMobは無効にし、Firebase Analyticsのみを使用しているのにこのエラーが出るということは、そういうことなのでしょう。

<details><summary>ついでにその他のパーミッションの確認方法はこちら</summary>

#### Google Play Consoleから確認
`App Bundleエクスプローラー`からパーミッションを確認したいApp Bundleを選択します。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987446/3989e340-ce97-c4a6-a1f1-f6099c6e51d0.png)


`詳細`タブを下にスクロールすると、`権限`という項目があるので、`詳細を表示`をクリックします。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987446/33b7133f-a044-c88d-1216-1251a051a654.png)


#### ローカルのAndroidManifest.xmlから確認（arm64の場合）
エクスプローラーを開き、プロジェクトの`\Intermediate\Android\arm64\AndroidManifest.xml`を開くだけです。
</details>

## 解決方法
パーミッションをオーバーライドして、com.google.android.gms.permission.AD_IDを削除します。
プロジェクトの`\Build\Android`に`ManifestRequirementsOverride.txt`を作成します。
ここにパーミッションを記述していくわけですが、パーミッションに関しては**このファイルに書いた内容に上書きされるため、必要なパーミッションを全て記述しないといけません。**

必要なパーミッションは、先ほど記述した確認方法で各自確認して、全て写してください。

ファイルの中に次のコードを記述します。
```
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove" />
```

<details><summary>記述例</summary>

```ManifestRequirementsOverride.txt
<uses-feature android:glEsVersion="0x00030002" android:required="true" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove" />
<!-- Supported texture compression formats (cooked) -->
<supports-gl-texture android:name="GL_KHR_texture_compression_astc_ldr" />
```

</details>

次に、UEのプロジェクト設定にtoolsを使用する設定を記述します。
先ほどのコードの、`tools:node="remove"`の`tools`属性を使うための設定です。

`Project Settings` > `Platforms` > `Android` > `Advanced APK Packaging` > `Extra Tags for <manifest> node`に次のコードを追加します。
```
xmlns:tools="http://schemas.android.com/tools"
```
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987446/b7fe5fc7-73a6-2a7e-9ba8-33bf523eb5b7.png)


設定は以上です。
パッケージ化してAndroidManifestを確認すると、パーミッションが削除されているはずです。

## 参考記事
https://qiita.com/Nkzn/items/326ad03e358b5d3fbafc

https://firebase.google.com/docs/analytics/configure-data-collection?hl=ja&platform=android

https://historia.co.jp/archives/5892/

https://qiita.com/suramaru517/items/52a01d16e9a50f9f1d3e

https://forums.unrealengine.com/t/remove-permissions-android-manifest/490305