Android
Mac
UE4
Sierra

UE4開発 CodeWorks for Androidのインストールでエラーが発生する

More than 1 year has passed since last update.

UE4のAndroid向け開発環境をMacで作り直そうとCodeWorksforAndroidのインストーラーを実行するとエラーが発生しインストールに失敗する。。
CodeWorksforAndroid-1R4-osx.dmgCodeWorksforAndroid-1R5-osx.dmgもダメ。それ以外は試してない)

本記事はUnrealEngine 4.13.1をインストールした際の事象となります。

Installing Android SDK Base 24.4.1_u1 failed.

Return Code: 2
failed MSpanList_Insert 0x2e12 0xb977c37635c0x0
fatal error: MSpanList_Insert
...

スクリーンショット 2016-10-20 13.23.47.png

結論

CodeWorksの不具合みたいです。
Mac OS Sierra(10.12)ではまだ動作しないです。別のMac(El Capitan(10.11)で試した所、正常に動作しインストールできました。

MacOS SierraでUE4のAndroid開発環境を作る

ということで、手動で環境を作りました。

1. 必要なものを入手する

  1. Android SDKをダウンロード
  2. Android NDKをダウンロード
  3. Antをダウンロード
  4. Gradleをダウンロード

私は取り急ぎ最新バージョンをダウンロードして、ホームディレクトリにNVPACKを作成しそこに解凍しました。

mkdir -m 755 ~/NVPACK

既に入っている場合やHomebrewで入れるなど場合は、そのパスを把握できていれば問題ありません。次のステップで使用します。

2. パスを通す

CodeWarksforAndroidが設定してくれるはずであった環境変数の設定を行います。
~/.bash_profileに以下のパスを記述します。

# ホーム直下のNVPACKを指定
export NVPACK_ROOT="~/NVPACK"

# 既にANDROID_HOMEが指定されている場合は以下それを使い回す
export ANDROID_HOME=$NVPACK_ROOT/android-sdk-macosx

PATH=$PATH:$ANDROID_HOME/tools
PATH=$PATH:$ANDROID_HOME/platform-tools
PATH=$PATH:$ANDROID_HOME/build-tools
PATH=$PATH:$ANDROID_HOME/support

# 既にNDK_HOMEが指定されている場合は以下それを使い回す
export NDK_ROOT=NVPACK_ROOT/android-ndk-r13
export NDKROOT=$NDK_ROOT
PATH=$PATH:$NDK_ROOT

# ※1
export NVPACK_NDK_VERSION="android-ndk-r13"
# ※2
export NVPACK_NDK_TOOL_VERSION="4.9"

# 既に指定済みである場合は、それを使い回す
export ANT_HOME=$NVPACK_ROOT/apache-ant-1.8.2
PATH=$PATH:$ANT_HOME/bin

# 既に指定済みである場合は、それを使い回す
export GRADLE_HOME=$NVPACK_ROOT/gradle-2.9
PATH=$PATH:$GRADLE_HOME/bin

export PATH=$PATH

※1 NVPACK_NDK_VERSIONは導入したNDKのバージョンを設定するandroid-ndk-<VERSION>の形式
※2 NVPACK_NDK_TOOL_VERSIONはパスを通したNDKのsources/cxx-stl/gnu-libstdc++に格納されている数字のディレクトリを指定する

3. UnrealEditorでもAndroidSDKの設定する

[ファイル] > [プロジェクトをパッケージ化] > [パッケージング設定...]を開き、プラットフォーム欄のAndroid SDKで前述のパスを通したように各SDKのパスを指定する。

スクリーンショット 2016-10-20 14.21.58.png

以上で完了。

サンプルアプリでもビルドして起動するとAndroid端末にデプロイされる。