🤖

UE5.2でAndroidビルドできるようにする(Windows環境)

2021/06/01に公開
1

UE5でMeta Questへのビルドを試してみようと思ったら、UE4.25以降でAndroid SDKのセットアップ方法が変わっていてはまったのでメモです。UE5.2でさらにはまったので更新しました(もうちょっとすんなり行くようにしてほしい)。

Android Studioの準備

UE4.24までのAndroidビルド環境はNVIDIA CodeWorksを使用していたのですが、UE4.25からはAndroidの標準開発環境であるAndroid StudioからインストールするAndroid SDK/NDKを使用するようになっています。

で、Epic公式の手順の説明(Setting Up Android SDK and NDK for Unreal)を見ると、初手でAndroid Studioの過去アーカイブからAndroid Studio 4.0を探してインストールしてねとあるのですが、さすがにこれは他の開発環境との共存で困ってしまいます。要は必要なSDKさえ用意できればいいはずなので、これを無視してAndroid Studioの最新版を普通にインストールします。またはすでにインストール済みのAndroid Studioを使用します。

なお、最近のバージョンのAndroid Studio(2022.3.1等)では、後のバッチファイルの実行に必要なコマンドラインツールがデフォルトで入っていませんので、あらかじめインストールしておきます。さらにSDK Managerへのアクセス方法も分かりにくくなっています

Android Studioをインストールして起動したら、下の画像の要領でCustomizeからAll settings...をクリックしてください。次に左ペインのLanguage & Frameworks > Android SDKを選択します。SDK Toolsタブを選択して、Android SDK Command-line Tools (latest)をチェックして右下のApplyボタンでインストールします。

UE付属のバッチファイルを実行する

UEをインストールすると、以下の場所に必要なSDK・NDKのパッケージをインストールするバッチファイルが用意されています。

(UE5) C:\Program Files\Epic Games\UE_5.2\Engine\Extras\Android\SetupAndroid.bat
(UE4) C:\Program Files\Epic Games\UE_4.27\Engine\Extras\Android\SetupAndroid.bat

バッチファイルの中を見ると、以下の行でAndroid Studioのツールを呼び出して必要なパッケージをインストールしています(UE5.2版)。

call "%SDKMANAGER%" "platform-tools" "platforms;%PLATFORMS_VERSION%" "build-tools;%BUILDTOOLS_VERSION%" "cmake;%CMAKE_VERSION%" "ndk;%NDK_VERSION%"

なのでこのSetupAndroid.batを実行すればいいのですが、素直には動きませんので、実行する前に内容をいくらか書き換えます。まず、

set STUDIO_PATH=

となっているところに、インストール済みのAndroid Studioのパスを設定します。また、JDKが必要なのですが、最近のAndroid StudioにはOpenJDKが同梱されていますので、環境変数JAVA_HOMEにこのOpenJDKのパスを設定します(以前はjreフォルダでしたが、jbrフォルダに移動しています)。Android Studioをデフォルトの場所にインストールしていれば、以下のようになります。

set STUDIO_PATH=C:\Program Files\Android\Android Studio
set JAVA_HOME=C:\Program Files\Android\Android Studio\jbr

さらに下のほうの環境変数SDKMANAGERの設定の"8.0"を"latest"に書き換えます。

set SDKMANAGER=%STUDIO_SDK_PATH%\cmdline-tools\latest\bin\sdkmanager.bat

バッチファイルを実行するとコマンドラインにプログレスバーが表示されて必要なパッケージがインストールされます。

なお、AdoptOpenJDKで実行しようとするとsdkmanager.batの実行時に

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema

というエラーが出て通りませんでした。

UEでAndroidのSDK・NDKを設定する

UEのEdit > Project Settings > Android SDKでSDKやNDKのパスを設定します。が、何を入れたらいいかよく分からないと思います(おまけにcontains 'android-sdk-'とか「そんな名前のフォルダもうないよ!」という表示もあり……)ので、以下の設定で手元ではビルドが通るというスクショです。

UE5.2

kobayashiのところはユーザー名で書き換えてください。SDKはAndroid Studioのデフォルト設定の場所になっています。NDKはバージョン番号を含めたパスを指定します。なお、SDK等の項目を空にするとシステムの環境変数を見に行くのですが、環境変数というのは壊れるものなので……。

Javaの場所ですが、Android Studio付属のOpenJDKを指定して使用すると

Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7

というエラーが出てビルドできない現象にはまりました。代わりにOracleのサイトのアーカイブからJava SE Development Kit 8u301あたりをインストールして(Oracleのアカウント作成が必要)そのパスを設定しています。

SDKが無事に認識されると、PlatformsのところにAndroidデバイスが表示され(多少時間がかかる場合があります)、ビルドが可能になります。認識されない場合はadb devicesコマンド等で接続を確認してください(Androidデバイスを開発者モードにしたりする必要があります)。

あとはProject SettingsのPlatform > AndroidやEngine > Renderingを設定する等、公式のドキュメントの指示を参照してください。

Discussion