UE 4.13 で作ったレベルを Android デバイス上で動かしてみた

More than 1 year has passed since last update.

UE 4.13 で作ったレベルを Android デバイス上で動かそうと思ったときの覚書です。


公式ドキュメントはあるものの……

Android 開発のスタートアップガイドは UE4 の公式ドキュメントに用意されています。

Android クイックスタート

しかし、今回はこの手順は使いませんでした。

というのも……


  • Unity を使う上で、Android SDK などのツール群を既に入れていた。

  • 過去に公式ドキュメントどおりにやっても「Launch」のデバイス一覧に Android デバイスが列挙されなかったことがあった。

などの理由があったためです。

ですので、今回は公式ドキュメントに頼らずにやってみることにしました。


今回やった手順

今回はこちらのサイトを参考にさせていただきました。

UE4でAndroidアプリをビルドするには

手順はすべてこのサイトに載っているとおりにやっています。

今回インストールしたものの一覧と、バージョンを下記に載せておきます。

インストールしたもの
バージョン

JDK
8u102(windows x64)

Android Studio
2.2

Android SDK
Android 5.0(Lollipop)

Android NDK
13.0.3315539

Apache Ant
1.9.7


躓いたところとその解決策

この手順に従って「Launch」ボタンを押せば Android デバイス上でアプリが動くはずでしたが、自分の環境ではエラーが発生して動きませんでした……。

アウトプットログを調べてみたところ、以下のようなエラーが大量に発生していました。

LogPlayLevel: Error: Target id 'android-19' is not valid. Use 'android.bat list targets' to get the target ids.

「android-19」というのは、「Project Settings」にある「Platforms - Android SDK」の項目「NDK API Level」で設定している値です。

ue413_android_00.png

この項目についてネットで調べてみたところ、AnswerHub で以下のような質問が見つかりました。

AndroidのSDK API Levelの設定値について

これを見たときに「SDK と NDK の API レベルが合ってないのでは?」と思い、「NDK API Level」の値を「Android 5.0」の API レベル「21」に合わせて「android-21」に変更してみました。

その結果、無事に Android デバイス上で動くようになりました!


補足


「android-19」で動かなかった理由

この理由はいたって簡単。

「Android 4.4」の SDK をインストールしていなかった

でした。

「Project Settings」にある「Platforms - Android SDK」の項目「SDK API Level」「matchndk」を指定すると、「NDK API Level」に設定されている値を元に「SDK API Level」の値を決めていたみたいです。

ue413_android_02.png

今回の「android-19」の場合、「SDK API Level」「Android 4.4」が指定されるような値になっていたらしく、「Android 4.4」の SDK がインストールされてない環境ではエラーになっていた、ということらしいです。

ちなみに、「Android 4.4」の SDK をインストールしたら、「android-19」でも動くようになりました。


「Launch」のデバイス一覧に Android デバイスが表示されなかった理由

この理由もいたって簡単。

「Project Settings」にある「Platforms - Android SDK」の項目「Location of ~」に値が設定されていなかった

ue413_android_01.png

でした。

ただし、この表示にも段階があるようで……



  • 「Location of Android NDK」を設定すると、「No Devices Found」になる。


  • 「Location of Android SDK」を設定すると、デバイスが表示される。

と言った挙動になってました。


環境変数について

UE4 の公式ドキュメントに以下のようなものがあります。

Android ゲームの開発のリファレンス

ここを見ると

TADP をインストールしていない場合、環境変数が正しく設定されているか確認する必要があります。

と言った記述がありますが、今回試した際はこれらの環境変数がなくても動いていました。

(ドキュメント自体は 4.9 時代のものなので、仕様が変わったのではないか?と思われます。)