UE 4.13 で作ったレベルを Android デバイス上で動かそうと思ったときの覚書です。
#公式ドキュメントはあるものの……
Android 開発のスタートアップガイドは UE4 の公式ドキュメントに用意されています。
しかし、今回はこの手順は使いませんでした。
というのも……
- Unity を使う上で、Android SDK などのツール群を既に入れていた。
- 過去に公式ドキュメントどおりにやっても「Launch」のデバイス一覧に 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」**で設定している値です。
この項目についてネットで調べてみたところ、AnswerHub で以下のような質問が見つかりました。
これを見たときに**「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」の値を決めていたみたいです。
今回の**「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 ~」に値が設定されていなかった
でした。
ただし、この表示にも段階があるようで……
- **「Location of Android NDK」を設定すると、「No Devices Found」**になる。
- **「Location of Android SDK」**を設定すると、デバイスが表示される。
と言った挙動になってました。
##環境変数について
UE4 の公式ドキュメントに以下のようなものがあります。
ここを見ると
TADP をインストールしていない場合、環境変数が正しく設定されているか確認する必要があります。
と言った記述がありますが、今回試した際はこれらの環境変数がなくても動いていました。
(ドキュメント自体は 4.9 時代のものなので、仕様が変わったのではないか?と思われます。)