【cocos2d-x 3.3】MacでAndroid版の環境構築

喋り担当のkeiです(・ω・)

前回の記事では、Macにcocos2d-xのiOS版開発環境を構築しました。
今回はAndroid版の開発環境構築の説明です。

Android版です…(´・ω・`)

先に断っておきます。
「環境構築ニガテ」という方は、十分に時間に余裕のある時に構築して下さい。
ダウンロードに時間がかかったり、その他色々と頭がイーッ!となる場合があります。

いや、ホントに(´・ω・)

cocos2d-xが何かとか、そういうのは前回の記事をご参照下さいませ。
今回もMac上に環境構築します。Windows版はGoogle先生にお聞き下さい。
また、cocos2d-xは既にインストールされていることを前提としています。
インストールしてないよ!という方は、前回の記事を(ry

こんな環境で構築します。

MacBook Air
MacOS X v10.9(Mavericks)
Xcode V6.1.1
Eclipse4.4(Luna)
Java 1.7.0.67

OSは最新じゃありませんが、2015年1月時点で最新の「Yosemite」でも大丈夫です。
多分(・ω・)

それでは地獄の門を開きましょう。

Eclipseのインストール

少し前までは後で説明するAndroidSDKとEclipseがセットでインストールできたのですが、最近はAndroidStudioとやらに変わっているようです。
Google先生曰く、頑張るとAndroidStudioとやらでも環境構築できるらしいですが、知りませんのでEclipseで話を進めます。

まずは本家でMac版のEclipseをダウンロードしてきましょう。

ここで「Eclipse IDE for C/C++ Developers」をインストールして下さい。
インストールというか解凍ですが、解凍したディレクトリはお好きなとこに置いて下さい。

自分はApplicationディレクトリ配下に「AndroidDev」なんてディレクトリを作って、この後で紹介するAndroidSDKやら、NDKやらをまとめて入れてます。
こんな感じです。

/AndroidDev/eclipse
/AndroidDev/sdk
/AndroidDev/ndk-r10d

Eclipseが英語なのでショボーンになった方用】
Mac版のEclipseは本家からDLしてくるので、当然英語です。
Google先生にお聞きする時はは英語の方が効率よかったりしますが、「日本語の方が目に優しいじゃん!」という方はEclipseを日本語化してしまえばいいと思います。

Windows版のEclipseを使っている人はご存知かと思いますが、「Pleiades」というEclipseの日本語化プラグインがあります。

統合開発環境 Eclipse 日本語化プロジェクト - Pleiades

ですがこのPleiadesWindows版のみで、Mac版にはありません(´・ω・`)
そんな時は、Pleiadesの日本語化プラグインだけ使うと幸せになれます。

手順は簡単です。
A. 最新版のPleiadesをダウンロードして解凍する。
 ダウンロードするものは「C/C++ Standard Edition」でOKです。
B. 解凍したPleiadesの「/pleiades/eclipse/dropins/MergeDoc」をコピる。
C. Eclipseの「/eclipse/dropins/」ディレクトリにペーストする。
D. Eclipseの実行ファイルのメニューから「パッケージの内容を表示」
 マウス派の方は右クリック。タッチパッド派の方はcontrol押しながらタップで。
 自分はマウス派ですので、某カフェではドヤ顔できません。
E. Finderが表示されるので、「/Contents/MacOS/eclipse.ini」をエディタで開く。
F. お好きな場所に以下の3行を追加する。


 -Dfile.encoding=UTF-8
 -javaagent:../../../dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
 -Xverify:none


 一応説明しておきますね。
 1行目に追加するものはエンコード設定。
 2行目に追加するものは「Pleiadesに入ってるこのjarファイル使うよ」設定。
 3行目に追加するものはPleiadesを使うと不具合を起こすので、回避するための呪文。

終わったら起動するだけです。
「起動したのに日本語になってねぇよ!」って方は、既に一度でもEclipseを起動しているんじゃないかなと。そういう方は、クリーン起動を一回実行すれば大丈夫です。

Mac版のEclipseは、Windows版と違ってクリーン起動用のアプリケーションがありません。
ですので、ターミナルからクリーン起動をしてあげる必要があります。
ターミナルを開いてEclipseがあるディレクトリに移動して、以下のコマンドを実行するとクリーン起動されます。

$ Eclipse.app/Contents/MacOS/eclipse -clean

ちなみに、Pleiadesは削除してしまって構いません。
そもそもWindows版ですし、使い道がないのです(´・ω・`)
さようなら、Pleiades。君のことは忘れない。

ちなみに自分は日本語化していますので、後の説明は日本語メニューでの説明になります。

Android SDKのダウンロード

最近は、前述したAndroid Studioとやらに内包されているようですが無視します(´ω`)

Download Android Studio and SDK tools  |  Android Developers

上のページの下の方に「SDK Tools Only」という項目がありますので、そこからMac版のSDKをダウンロードして下さい。
ちょっとDL完了まで時間かかりますが、ダウンロードが終わったら解凍して適当なディレクトリに配置して下さい。

Android NDKのダウンロード

今度はAndroid NDKのダウンロードです。名前は似てますが別物です。
(ちなみにNative Development Kitとか言います)

Android NDK  |  Android Developers

上にあるAndroid NDKのダウンロードページで、「android-ndk-r10d-darwin-x86_64.bin」ってのをダウンロードして下さい。

配置する場所はどこでもいいのですが、SDKを配置したディレクトリと同じ場所がわかりやすいかと思います。
ダウンロードしたファイルを解凍する時は実行属性を指定しないといけません。
面倒ですがターミナルで配置したディレクトリに移動して、以下のコマンドを。

$ chmod 700 android-ndk-r10d-darwin-x86_64.bin
$ ./android-ndk-r10d-darwin-x86_64.bin

解凍後のディレクトリ名は長いので、短くしてしまいましょう。
ディレクトリ名を変更する時、NDKのバージョンをつけておいた方が無難です。
上の場合だと「ndk-r10d」なんて名前にしておくと、将来的にいいことが起きるかもしれませんが、今回は別にいいこと起きません。

Homebrewのインストール

HomebrewとはMac用のツールを楽にインストールできるパッケージ管理システムです。
CentOSで言うとこの「yum」みたいなノリです。

次に紹介するANTをインストールする際に必要になります。
でも、きっといつか役立つはずですのでこの機会に入れてしまいましょう。
既にインストール済みの方は、この項目を飛ばして下さい。
「わかんねぇよ!」という方は、ターミナルでバージョン情報でも出してみましょう。

$ brew -v

バージョン情報が表示されなかった方はインストールを。
表示された片は次項へどうぞ。

インストールする方は、以下の手順で下準備をしましょう。

A. 既にインストール済みだと思われるXcodeを開きます。
B. メニューから「Xcode」→「Preferences」→「Downloads」タブを開きます。
C. Components部分に「Command Line Tools」というものがあるのでインストール実行。

Command Line ToolsはHomebrewをインストールする時に使うのです。
「これ何?」とかそういうのはGoogle先生が詳しいかと思います。

次はHomebrewをインストールするのですが、これは簡単です。
何故ならHomebrewの本家にインストール用のコマンドラインが準備されているからです。
これをターミナルから実行すれば終わりです。
コマンドをここに貼るだけだと寂しいので、一応本家にいきましょう。

The Missing Package Manager for macOS (or Linux) — Homebrew

言語設定できますので、日本語にしてもいいと思いますが見るべき部分は一箇所だけです。
本家ページの下の方に「Install Homebrew」という項目があり、そこにコマンドがあります。

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

これをまるっとコピって、ターミナルで実行したらインストール完了です。
インストール後にバージョン確認をして、ちゃんとインストールされているか確認しましょう。
きっとバージョン情報が表示されるはずです。

ANTのインストール

ANTというものはJavaのビルドツールです。
cocos2d-xでAndroid側を触る時にも必要らしいので、インストールしておきましょう。
ANTはHomebrewがあれば、ターミナルからサクっとインストールできます。
今回は前項でHomebrewをインストールしているはずですので、問題ないと思います。
インストールはターミナルを開いて、以下のコマンドを実行して下さい。

$ brew install ant

既にANTをインストールしている場合はバージョン情報が表示されます。

cocos2d-xのセットアップ

iPhone版の環境構築した時に叩いたsetup.pyを、再度実行します。
今回はAndroid版の設定を反映させるのです。

前回書いたのでちょっとコピペしつつ(・ω・) とりあえずターミナルを開いて、cocos2d-xを配置したディレクトリに移動して下さい。
自分の環境の場合だと「/Applications/cocos2dx/cocos2d-x-3.3/」になります。
そこに「setup.py」というものがありますので、以下のコマンドで実行。

$ ./setup.py

ちなみにこれはpythonの実行ファイルです。
Macは最初からpythonが入っているので、何も考えずに実行して問題ありません。多分(´ω`)

実行すると「NDKどこ?」「SDKどこ?」などと聞いてきます。
今回は聞かれた通りに入力してEnterキーを押しましょう。
既に配置しているはずのNDKとSDKのパスを入力してEnterキーです。
入力した内容は.bash_profileに書き込まれます。

前回の分と合わせると.bash_profileは以下のようになっています。
パスとか違うかもしれませんが、その辺はご自分の環境に合わせてみて下さい。


# Add environment variable COCOS_CONSOLE_ROOT for cocos2d-x
export COCOS_CONSOLE_ROOT=/Applications/cocos2dx/cocos2d-x-3.3/tools/cocos2d-console/bin
export PATH=$COCOS_CONSOLE_ROOT:$PATH

# 今回はここから記載した内容が反映されていると思います。------------
# Add environment variable NDK_ROOT for cocos2d-x
export NDK_ROOT=/Applications/AndroidDev/ndk-r10d/
export PATH=$NDK_ROOT:$PATH

# Add environment variable ANDROID_SDK_ROOT for cocos2d-x
export ANDROID_SDK_ROOT=/Applications/AndroidDev/sdk/
export PATH=$ANDROID_SDK_ROOT:$PATH
export PATH=$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools:$PATH

# Add environment variable ANT_ROOT for cocos2d-x
export ANT_ROOT=/usr/local/Cellar/ant/1.9.4/libexec/bin
export PATH=$ANT_ROOT:$PATH
# 今回はここまで記載した内容が反映されていると思います。-------------

# Add environment variable COCOS_X_ROOT for cocos2d-x
export COCOS_X_ROOT=/Applications/cocos2dx/cocos2d-x-3.3
export PATH=$COCOS_X_ROOT:$PATH

# Add environment variable COCOS_TEMPLATES_ROOT for cocos2d-x
export COCOS_TEMPLATES_ROOT=/Applications/cocos2dx/cocos2d-x-3.3/templates
export PATH=$COCOS_TEMPLATES_ROOT:$PATH


どうでしょうか?

cocos2d-xのプロジェクトを作りましょう。

これは前回も書きましたが、cocos2d-xのプロジェクトはコマンドで作成します。
ターミナルを開いて、プロジェクトを作成したいディレクトリに移動したら以下のコマンドを実行してみて下さい。
$ cocos new SampleProject -p com.hogehoge.SameProject -l cpp

オプションの解説は前回の記事をご参照下さい。

Android版の環境を構築する。

ここからが本番です(´・ω・`)
今回、この記事を書くにあたってv3.2からv3.3にしてみたのですが、「やらなきゃよかった…」と思いました。
でも、一度構築してしまえば大丈夫なので頑張りましょう。

Android SDKのインストール

最初の方でダウンロードしたAndroidSDKを使って、今度はインストールをします。
ここまで読んだ方は、恐らくどこかのディレクトリにAndroid SDKを配置しているはずだと思いますのでディレクトリを開いてSDKマネージャを起動しましょう。
自分の環境だとこんなとこにあります。

/Applications/AndroidDev/sdk/tools/android

このandroidファイルをダブルクリック等で実行して下さい。
ターミナルが起動すると思いますが、少し待つとSDKマネージャが起動します。
ここからAndroid開発に必要なものを選択してインストールするわけです。

画面を見るとわかりますが、結構たくさんあります。
「わかんねぇから全部いくぜ!」としてしまうと後悔します(´・ω・`)
ですので、とりあえず以下のものだけインストールしましょう。
後は必要に応じてインストールする感じで。


Tools/Android SDK Tools
Tools/Android SDK Platform-tools
Tools/Android SDK Build-tools(最新版だけでOKです)
Android L(API 20, L preview)配下を全部
Android 4.4W.2(API 20)配下を全部
Android 4.4.2(API 19)配下を全部
(下位バージョンも必要な方は状況に応じて色々選択)
Extras/Android Support/Android Support Repository
Extras/Android Support/Android Support Library
Extras/Android Support/GooglePlay services for Froyo
Extras/Android Support/GooglePlay services
Extras/Android Support/Google Repository
Extras/Android Support/Google Play APK Expansion Library
Extras/Android Support/Google Play Billing Library
Extras/Android Support/Google Play Licensing Library
Extras/Android Support/Google Web Driver
Extras/Android Support/Intel x86 Emulator Accelerator(HAXM installer)

※2015年1月時点です。

結構たくさんありました(´・ω・`)
もしかすると不要なものもあるかもしれませんが、その辺はドンマイ。
インストールには時間がかかりますので、寝る時放置などを推奨です。
途中で何か聞かれたりしますが、そのうちインストールも終わります。

ADTのインストール

さて、ようやくEclipseの設定に入ります。
とりあえずEclipseを起動して下さい。
日本語化した方はロード中なんて文字が出ていると思います。

EclipseAndroidアプリを開発するにはADT(Android Developer Tool)とプラグインが必要になります。
これはEclipseのメニューからインストールできます。
インストールというかダウンロードというか、まぁそういう感じなのです。

Eclipseが起動したらメニューバーに「ヘルプ」という項目がありますので、そこから「新規ソフトウェアのインストール」という項目を選択して下さい。
そうすると別ウィンドウが立ち上がります。ここからADTをインストールします。
画面の上の方に「作業対象」という項目がありますので、そこに以下のURLを入れて下さい。

https://dl-ssl.google.com/android/eclipse/

少し待つと、すぐ下に「開発ツール」というものが表示されます。
チェックボックスを入れて「次へ」ボタン、そのままインストールして下さい。
インストールが終わったら、一応Eclipseを再起動しておきましょう。

Eclipseにパスを通す。

再起動が終わったらメニューバーにある「Eclipse」から「環境設定」を選択して下さい。
サイドメニューに「Android」という項目があれば、AndroidSDKが無事にインストールされている証拠です。
まず、Eclipseに対してAndroidSDKのパスが通っているか確認しましょう。

サイドメニューから「Android」を選択すると「SDKロケーション」という項目があります。
そこに既に配置しているであろうSDKのパスが正確にセットされていればOKです。
前項でSDKのインストールも実行していますので、ターゲット名とか色々表示されているかなと思います。
とりあえず、そこまで確認すればSDKに関しては完了です。

次はAndroidNDKのパスを通します。
引き続きサイドメニューから「C/C++」→「ビルド」→「環境」を選択して下さい。
この画面ではEclipseに対しての環境変数を設定できます。

「追加」ボタンを押すと環境変数の新規登録ができる画面が表示されます。
ここに名前と値をセットすることで、Eclipseへの環境変数が登録されます。
今回は以下のように設定してみます。

名前:NDK_ROOT
 値:/Applications/AndroidDev/ndk-r10d/

値の部分は環境に応じて変更して下さい。
何故かここだけ直接入力ですので、間違えないように注意して下さいね。
ここまでが終わればゴールは近いです。
適用ボタン、OKボタンと押した後でEclipseを再起動して下さい。

cocos2d-xのライブラリをインポート

Eclipseは再起動しましたか?
次はcocos2d-xのライブラリをEclipseにインポートしましょう。

メニューバーからファイル→インポートとか、パッケージエクスプローラーから右クリック押してインポートとか。
お好きな方で構いませんが、そんな感じでインポートします。

インポートソースは「Android」→「Exsiting Android Code into Workspace」を選択し、次の画面ではインポートするソースのルートディレクトリを選択します。
今回はcocos2d-xをインポートしますので、参照ボタンを押して選択する必要があります。
自分の環境では以下のようなパスになります。

/Applications/cocos2dx/cocos2d-x-3.3/cocos/platform/android/java

ここまで指定すると「libcocos2dx」というものが無事にインポートされます。

cocos2d-xプロジェクトをインポート

先に謝っておきます(´・ω・`)
この項目に関してはイマイチ自信がありません。
理由は記事のために環境構築を何度もやり直したからこうなった可能性もあるためです。
でも、もしかしたらv3.3だとそうなったのかな?という淡い期待も込めて書いてみます。

cocos newコマンドで既にプロジェクトを作成していると思います。
そのプロジェクトをインポートしてあげるだけです。
インポート方法は前項を参照して下さい。
指定するディレクトリは以下のようになります(今回も自分の環境です)

/cocos2dx-project/SampleProject/proj.android/

ここからが自信がない部分になってしまうのですが(´・ω・`)
これをインポートした瞬間、突然ビルドが始まります。
このビルド、proj.android配下にある「build_native.py」を実行した際に走るビルドです。
v3.3からそんな仕様になったんだろうか…とも思うのですが、違うかもしれません。
ビルドが走ったら、そこそこ時間がかかるのでしばらくお待ち下さい。
走らなかった場合は次項へ(つω⊂)

Andoroid版のビルドを実行する。

前項でちょっと触れましたが、「build_native.py」を実行してAndroid版のビルドをします。
build_native.pyはcocos2d-xプロジェクト配下にあります。
今回は以下のディレクトリです。

/cocos2dx-project/SampleProject/proj.android/build_native.py

ターミナルを開いて「/cocos2dx-project/SampleProject/proj.android/」に移動して下さい。 移動した先で以下のコマンドを実行です。

$ ./build_native.py

初回は結構時間かかりますので、慌てず騒がずお待ち下さい。
ここまでくればゴールは目前です(`・ω・´)

Eclipseの掃除

この項目は人によっては不要です(・ω・)
でも、念のために確認だけしておくといいかもしれません。

Eclipseにcocos2d-xのプロジェクトをインポートしているはずですので、インポートしたプロジェクトを右クリック等して「プロパティ」を開きます。
開くとサイドメニューに「Android」という項目がありますので、それを選択。
選択するとプロジェクト・ビルド・ターゲットなんてのがありますが、その下にライブラリというセクションがあります。
ここにcocos2d-xのライブラリが表示されているかもしれません。
緑のチェックマークか、赤のバツマーク。いかがでしょうか?

緑だろうが赤だろうが、表示されていたら「除去」して下さい(`・ω・´)
v3.2までは必要だったのですが、v3.3からは不要です。
むしろ、ここに設定されていると競合を起こします。

故に抹殺(´ω`)

Android版を実機で動かしてみる。

「何でシミュレータじゃねぇんだよ!」と思われるかもしれませんが、実機です(・ω・)
シミュレータで動かしたい方は、ADVの設定辺りでGoogle先生にお聞き下さい。
実機で動かす理由は、EclipseAndroidシミュレータがクソすぎて話にならないからです。
というか、ネイティブ開発は自分の経験上だと実機で動かしながらの方がいいと心底思っています(´・ω・`)

そうそう、忘れてました。
実機で動かす前にEclipseにインポートしたcocos2d-xライブラリとプロジェクトをクリーンビルドしておきましょう。Eclipseも再起動した方がいいと思います。
やらなくても案外動いてしまいますが、保険として。

実機で動かす場合はAndroid自体を開発者モードにする必要があるのですが、どうも端末毎に違うようなのでお手持ちの実機型番辺りでGoogle先生を駆使して調べて下さい。
それとMacAndroid実機を接続するためのケーブルが必要です。
自分はdocomoユーザですので、ドコモポイントでケーブルを買いました。
1000円ちょっとだったような気がします(´ω`)

あとはケーブルにMacを挿してEclipseから実行すれば動きます。
長い戦いの終わりです。感無量ですね。

Eclipseでエラーが出て動かねぇよ!

という場合が多々あります(´・ω・`)
全部ではありませんが、発生したエラーと対処法を少し書いておきます。


「Unable to execute dex: Multiple dex files define Lorg(ry」などと表示される。

 ライブラリが競合してる時に発生するエラーです(´・ω・`)
 Eclipseの掃除の項目を見て、ライブラリを抹殺して下さい。

「Unresolved inclusion: 」とかいう警告を発見してしまった。

これは多分、NDKのパス設定を間違えています(´・ω・`)
NDKのパスは直接入力ですので、稀によくあります。
正しいパスを入力して、クリーンしてEclipse再起動して下さい。

この警告はEclipseで「プロジェクト/jni/hellocpp/main.cpp」を開くと
発生している場合があります。開けない時も同様だと思います。

build_native.pyを実行すると「APP_PLATFORM android-9 is larger than android:minSdkVersion(ry」とか怒られる。

これ、v3.3でも出るんですかね?(・ω・)
対象のAndroidバージョンが合ってねぇよ!的なエラーです。
「プロジェクト/jni/hellocpp/Application.mk」というファイルがありますので、開きます。
開いたら最終行辺りに以下のような形でバージョンを書いて、クリーンビルドで。

APP_PLATFORM := android-9
※数字部分はエラーメッセージに合わせて適宜変更して下さい。

多分直ると思うんですが、いかがでしょうか?


さて、前回の記事と今回の記事を合わせるとiPhone版とAndroid版のcocos2d-x開発環境が出来上がります(・∀・)
ようやく真の大勝利というわけです。

以降は今回やったようなクソ面倒な構築作業は不要です。
ターミナルからcocos newコマンドでプロジェクトを量産して下さい。

本当はもう少し設定ファイルを修正したり色々あるのですが、それはまた別の機会に。
環境ができたので、Google先生とか本を見たりして色々作ってみて下さい。

次回はちょうど自分のiOS Developerのお話しでも書こうかと思います。
心底、業務に全く関係ないことばかりですが、その辺は概ねいいでしょう(`・ω・´)

ではまた(・∀・)ノシ

参考

cocos2d-x 3.2 環境構築ガイド:OBAKESAN.net|オバケサン
Cocos2d-x v3.3 環境構築 - hyoromoのブログ
cocos2d-x 3.3rc2をインストールしてみた(3.3も追記) - Qiita