Windows の Unreal Engine 4.27 で Android 用の開発環境を手動で設定する

公式記事には、`SetupAndroid.bat` を実行するようにかかれていますが、このスクリプトが相当な曲者で、10台ほど違うマシンで試しましたが、まともに動いたことは一度もなかったです。

しかも内部で `setx` で PATH の設定をしてたりして、場合によっては環境が破壊されかねなくて（実際、破壊されかけた）、なかなか危うい感じがするんですが、これで公式でいいんでしょうか・・・

とりあえず、UE のバージョンが変わったらうまくいくかわかりませんが、手動で安全にセットアップしたときのメモを書いておきます。

# Android Studio のインストールと設定

下記を見てインストールします。

- [Android Studio のインストール](https://developer.android.com/studio/install?hl=ja)

## SDK Manager で必要なツールをインストールする

インストールできたら、起動して SDK Manager を開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/59b9d4de-d9f1-94f4-3f60-452566735e1f.png)

SDK Manager を開いたら、必要なツール類をインストールします。・

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/e658679d-662e-2fe6-c2e8-13520dd68c6d.png)

SDK Plattforms は Android 9.0 (API Level 28) が必要っぽいので、これは最低限インストールしておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/f8237b52-9874-3b78-a7e4-03e9f6e29712.png)

SDK Tools は下記が必要です。

- Android SDK Build Tools 
- NDK
- CMake
- Android SDK Platform Tools

ここで、NDK についてはバージョンを指定してインストールする必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/312a8223-8a35-ce33-f8a1-82fea150dd33.png)

右下にある Show Package Details にチェックを入れるとバージョンが選択できるので、21.4.7075529 にチェックを入れます。UE2.47 の場合、このバージョンでしか公式には対応してないようです。

チェックを入れたら Apply を押します。ライセンスへの同意を求められるので、
必要に応じて「同意」を押します。これでインストールが始まるので、しばらく待ちます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/81540a9e-1703-7c89-1803-3bfe29ee0739.png)

Android SDK Build Tools は 28.0.3 にだけチェックを入れて、他のチェックを外します。他のバージョンのものが入っていると、UE4でビルド中にエラーになるようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/9d61d459-eb11-463c-39aa-a6edd9247718.png)

CMake は 3.10.2.4988404 だけチェックを入れます。

Android SDK Platform Tools はバージョンの指定はありません。

これで Apply します。すると、選択されたものがインストールされ、チェックを外したものがアンインストールされます。

## 環境変数を設定する

ユーザの環境変数の設定で、NDK_ROOT と NDKROOT という環境変数に、NDK の入っているフォルダのパスを設定します。デフォルトでは、`C:\Users\ユーザ名\AppData\Local\Android\Sdk\ndk\21.4.7075529` です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/41d41d63-bca9-279a-f3a7-4d67e8379f61.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/afcf6fb5-594c-fbba-3c6c-7b5e7dff2365.png)

これらを追加しないと、UE でビルド中にエラーになります。

次に、ユーザの環境変数 Path の末尾に、下記を追加します。いずでもデフォルトの場所にインストールしている場合です。

- `C:\Users\ユーザ名\AppData\Local\Android\Sdk\platform-tools`
- `C:\Users\ユーザ名\AppData\Local\Android\Sdk\tools`

これらを追加しないと、adb.exe の実行に失敗します。

# Unreal Engine 4.27 側の設定

## プロジェクトの設定

エディタの「設定」から「プロジェクトの設定」を開いて、Android SDK を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/2362e1bd-7ca7-64fe-9003-3396537a2ef5.png)

パスをそれぞれ入力します。kani となっているところは、自分のユーザ名に置き換えます。なお、上記は Android Studio をデフォルトのパスにインストールしたときのものです。

## 実機をつないで実行する

実機をつなぎます。実機側で USB デバッグしてもよいか？とか聞かれたら OK とか押す必要があります（多分）。

実機が認識されると、エディタの「起動」のところで、実機を選べるようになります。実行したいデバイスを選べば、ビルドがはじまって、プログラムが実機に転送されて実行されます。

## Emulator では動かない

Android Emulator を使うと、ES3.1+ に対応してないので動かないというエラーがでます。これ、どなたか回避方法知ってます？

ちなみに `~/.android/advancedFeatures.ini` に `GLESDynamicVersion = on` と書いておくと、エラーは出なくなりますが、起動した瞬間アプリが落ちてしまうので、動かせないことには変わりなかったです。