【UE5.3】MetaQuest2向けにAndroidでPackage化したい

# はじめに
この記事はUE5.3で作ったVRアプリをパッケージ化してみる記事です。

利便性の為一部公式のドキュメントから逸脱した手段を踏んでいます。また、4や5.1、5.2とは手順に互換性がありません。この手順でセットアップを行うと、5.2などでビルドできていた環境を損なう可能性があります。

参考
[公式ドキュメント：Android SDK および NDK を設定する](https://dev.epicgames.com/documentation/ja-jp/unreal-engine/how-to-set-up-android-sdk-and-ndk-for-your-unreal-engine-development-environment?application_version=5.3)
[DeveloperForum質問：Error when install the build file of UE5.1 VR](https://forums.unrealengine.com/t/error-when-install-the-build-file-of-ue5-1-vr/731919)

環境
・Windows
・UE5.3.2
・AndroidStudio Koala(2024.1.1.11)

# Android Studioをダウンロードする
公式ではAndroid Studio Flamingo | 2022.2.1 Patch 2 May 24, 2023の使用を想定していますが、最新バージョンには過去のものも含まれているため執筆時最新のKoalaを使用していきます。
[公式ダウンロードサイト](https://developer.android.com/studio?hl=ja)

AndroidStudioをダウンロードしセットアップが完了したら、CustomizeのAll settings…を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/d7cd7484-3a42-90f7-9d13-0929becd6de5.png)

UEでビルドしパッケージ化するのに必要な要件は以下のようです。（間違っていたらすいません）

・SDK Platformsで対象のAndroid（MetaQuest2の場合は33）のSDK PlatrormsとSources for Android
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/0f73b867-bea9-2202-98ec-53f29cfb62fe.png)

※Android API XXは消さないようにしましょう。SDK本体が含まれています。

・SDK ToolsでDK Platrormsと同じ番号のAndroid SDK Build Tools（この場合は33.0.n)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/531f95e4-b110-731d-4bbb-2f4f32400856.png)

・SDK ToolsでAndroid SDK Command-line ToolsでLatestと8.0（8.0はいらない説がありますが怪しいためどちらも入れています）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/a4b55ca0-9394-e683-e8da-90b01af4dbfe.png)

CMakeやNDKは後で起動するBatが勝手にインストールしてくれるので手動で入れる必要はありません。

# SetupAndroid.batを実行する
UEでAndroidStudioを使用するのに必要なものをインストールさせるパッチを実行します。
UnrealEngine のAndroidを読み込ませたいバージョンのフォルダ→Engine→Extra→Android内に存在します。
Windowsなので.batを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/4d4d8949-7eb7-fd4a-a279-a623d7e0fcac.png)
実行して下のようになったらNDKやCMakeなどの追加が完了します。

![スクリーンショット 2024-07-12 130434.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/5cc92b00-1a23-c6f6-bd24-2e193a2c7758.png)

PCを一度再起動します。

# 環境変数を確認する
環境変数とアプリから検索を掛けると「環境変数を編集」というアプリが出てきます。
![スクリーンショット 2024-07-12 131235.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/d7844547-3bdc-bfb8-cbc8-973b5bd9362b.png)
値が以下のようになっていることを確認してください。
|変数|値|
| ---- | ---- |
|ANDROID_HOME|C:\Users\UserName\AppData\Local\Android\Sdk|
|JAVA_HOME|C:\Program Files\Android\Android Studio\jbr|
|NDK_ROOT|C:\Users\UserName\AppData\Local\Android\Sdk\ndk\25.1.8937393|
|NDKROOT|C:\Users\UserName\AppData\Local\Android\Sdk\ndk\25.1.8937393|

※UserNameは個人のアカウント名に置き換えてください
通常はそのままいけると思います。

# UEのプロジェクト設定を変更する
VRでパッケージ化したいプロジェクトを開き、プロジェクト設定を開きます。
プラットフォーム→Androidを開き、「プロジェクトはAndroidプラットフォームに対応していません」を「今すぐ設定」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/3c45fc48-f05a-e5b1-ce23-0dc09714f481.png)
Minimum SDK VersionとTerget SDK Versionはどちらとも32にしておきます。どうやら使用されているAPIレベルの一個下になるようです。謎だ…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/5577e5c9-56c2-0f7d-4e57-1712c044fdaa.png)
続いてプラットフォーム→Android SDKを開きます。
Android SDKやNDK、JAVAが環境変数の設定と同じであることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/38328853-51e6-dc29-64bd-916dae127bcc.png)

SDK API Levelが android- 33
NDK API Levelが android- 32
であることを確認してください。複数のSDKをインストールしている場合、ここの数字が違うことがあります。

プロジェクトを再起動して設定は完了です！

# 書き出す
プラットフォーム→Android→プロジェクトをパッケージ化を行うことでパッケージ化することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/d4fe6c89-e890-3167-dede-1da93091b29a.png)
.apkファイルが生成されるので、SideQuestやDeveloperHub経由でQuest2にインストールして遊びましょう！