Unreal Engine 4.26.2 Androidへビルドする際に発生したエラーと解決方法

# 目次
<!-- タイトルとアンカー名を編集 -->
1. [はじめに](#はじめに)
1. [開発環境](#開発環境)
1. [SetupAndroidが正しく実行できない](#setupandroidが正しく実行できない)
1. [ビルド時にエラーが発生する](#その他)
1. [アプリ起動時にエラーメッセージが表示される](#アプリ起動時にエラーメッセージが表示される)
1. [おわりに](#おわりに)

# はじめに
以下のサイトを参考に進めました。

https://docs.unrealengine.com/4.26/ja/SharingAndReleasing/Mobile/Android/GettingStarted/

Unreal Engine 4.25.4であれば特にエラーが発生することなくAndroidへビルドできたのですが、Unreal Engine 4.26.2ではエラーでつまづくことが多かったので、他の方が参考にしていただくために記事を書きました。

私はUnreal Engineをはじめて1ヶ月程度の初心者なので、もし記事に間違いなどありましたら、ご指摘していただけると助かります。

# 開発環境
パソコン： Mac OS Catalina 10.15.7
Unreal Engineのバージョン：4.26.2
# SetupAndroidが正しく実行できない

https://docs.unrealengine.com/4.26/ja/SharingAndReleasing/Mobile/Android/Setup/AndroidStudio/

上記のサイトの「3. Android NDK r21b を使用するように Unreal を設定する」で「SetupAndroid.command (Mac)」を実行する際に、途中でエラーが発生してしまう現象です。

この原因は、Android Studioを「最新の安定版」にしていたことでした。
「Android Studio 4.0」にインストールし直すことで解決しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572997/0b0b7b3c-6f65-ed52-1203-c6c18e51f613.png)

# ビルド時にエラーが発生する
Windowsでも同様のエラーが発生することがあるようです。
Unreal Engine 4.26.2でAndroidへビルドする際に、おそらく発生する可能性が高いと思うのですが、私は解決方法が見つけられずに10時間ほど途方に暮れていました…。

以下のサイトの「5 - Android デバイスを起動する」のビルド時に、エラーが発生する現象です。

https://docs.unrealengine.com/4.26/ja/SharingAndReleasing/Mobile/Android/GettingStarted/

原因は様々なものがあるため、この方法で必ず解決するとは限りません。
一例としてエラーの内容と解決方法を掲載しています。

#### 発生したエラー
![スクリーンショット 2021-08-17 23.37.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572997/09821393-8a13-53ff-fd09-99525d9fe058.png)
エラーメッセージでGoogle検索をする方のために文章でも掲載しておきます。

>LogPlayLevel: Build-tool 31.0.0 is missing DX at /Users/aguroshou/Library/Android/sdk/build-tools/31.0.0/dx
LogPlayLevel: File /Users/aguroshou/.android/repositories.cfg could not be loaded.
LogPlayLevel: Build-tool 31.0.0 is missing DX at /Users/aguroshou/Library/Android/sdk/build-tools/31.0.0/dx
LogPlayLevel: FAILURE: Build failed with an exception.
LogPlayLevel: * What went wrong:
LogPlayLevel: Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.
LogPlayLevel: > Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager.
LogPlayLevel: * Try:
LogPlayLevel: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
LogPlayLevel: * Get more help at https://help.gradle.org
LogPlayLevel: BUILD FAILED in 37s
LogPlayLevel: Error: ERROR: /bin/sh failed with args -c '"/Users/aguroshou/Desktop/UE4_426_AndroidBuild/Intermediate/Android/armv7/gradle/gradlew" :app:assembleDebug'
LogPlayLevel: (see /Users/aguroshou/Library/Logs/Unreal Engine/LocalBuildLogs/Log.txt for full exception trace)
LogPlayLevel: AutomationTool exiting with ExitCode=1 (Error_Unknown)
LogPlayLevel: Completed Launch On Stage: Build Task, Time: 44.677315
LogPlayLevel: Error: RunUAT ERROR: AutomationTool was unable to run successfully.
PackagingResults: Error: Launch failed! Unknown Error

このエラーの中で、「LogPlayLevel: Build-tool 31.0.0 is missing DX at /Users/aguroshou/Library/Android/sdk/build-tools/31.0.0/dx」が原因でした。
パスの中身を確認すると、たしかに「dx」というファイルがありませんでした。

解決のために、以下のサイトを参考にしました。

https://stackoverflow.com/questions/68387270/android-studio-error-installed-build-tools-revision-31-0-0-is-corrupted

AndroidStudioを開き、Configure→SDK Managerを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572997/e7a54bf0-c5f1-e33f-b84f-54a97541d8c7.png)

左の欄のSystemSettings→Android SDK→右下のShow Package Detailsをチェック→中央のAndroid SDK Build-Tools 31の中の「31.0.0」のチェックを外し、「30.0.3」をチェックして「Apply」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572997/dc44e7b0-87b4-2131-099a-68b4259e523e.png)
※ 31.0.0から30.0.3へ変更したことによる影響は把握できていません。

この状態でAndroidへビルドを行うと、エラーが解決しました。

ちなみにですが、以下のサイトの「SDK パスを手動で指定する」の手順は行わず、Android　SDKのパスが空欄の状態でビルドを行うことができました。

https://docs.unrealengine.com/4.26/ja/SharingAndReleasing/Mobile/Android/Setup/AndroidStudio/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572997/cfaad944-404e-c008-2bf5-7eff01e3ed36.png)

# アプリ起動時にエラーメッセージが表示される
Androidでアプリを開くと、以下の画像のエラーメッセージがはじめに表示されました。

![AndroidError.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572997/986c6362-1103-4f79-7c09-b92b205e8f8a.jpeg)

解決のために、以下のサイトを参考にしました。

https://answers.unrealengine.com/questions/1006782/error-cdo-constructor-oculusresourceholder-failed.html

https://unrealengine.hatenablog.com/entry/2016/12/30/233834

UnrealEngineのEdit→Plugins→左の欄のBuilt-In→Virtual Realityをクリック→Oculus VRとSteam VRの「Enabled」チェックを外す→右下の「Restart Now」でUnrealEngineを再起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572997/368766e5-ee34-b2b9-51b8-23b5f839ebe3.png)

この状態でもう一度ビルドを行うと、先ほどのエラーメッセージが表示されなくなると思います。

# おわりに
もしよろしければ、今回の手順でエラーが解決したか、解決しなかったか、それとも他の方法を参考にしたかなど、コメントなどを書いてくださると他の方が参考になるのでぜひお願いします！

Unreal Engine 4.26でのAndroidのビルドは不具合が多い印象があるので、どうしてもエラーが解決できないのであればUnreal Engine 4.25をインストールしてみてビルドテストを行うことも良いかもしれません。
（ただ、Unreal Engineはプロジェクトのダウングレードができないようなので、既に開発を4.26で進めているのであれば使えない方法です。）