Cocos2d-xの環境構築(Android向け)

Cocos2d-xの環境構築〜プロジェクト作成(iOS向け) - おかひろの雑記ではiOS上でcocos2d-xのプロジェクトを作成して動作させました。
今回は、同じプロジェクトのプログラムをAndroid上でも動作させる方法のメモです。

今回使用したバージョン

  • cocos2d-2.0-x-2.0.4
  • eclipse4.2

Macです。Windowsでは試していません。

事前準備
AndroidSDKをDownload Android Studio and SDK toolsからダウンロードして解凍します。
解凍してできたフォルダはApplicationsなどに置き、パスをメモしておきます。

/Applications/android-sdk-mac_x86

AndroidNDKをAndroid NDKからダウンロードして解凍します。
解凍してできたフォルダはApplicationsなどに置き、パスをメモしておきます。

/Applications/android-ndk-r8b

EclipseAndroidプラグインもインストールしておきます。

次に、cocos2d-xのフォルダの中(私の場合は/Users/Rita/Documents/cocos2dx/cocos2d-2.0-x-2.0.4)にあるcreate-android-project.shを編集し、AndroidSDKとNDKのパスを指定します。

NDK_ROOT_LOCAL="/Applications/android-ndk-r8b"
ANDROID_SDK_ROOT_LOCAL="/Applications/android-sdk-mac_x86"

Android向けプロジェクト作成

事前準備で修正したcreate-android-project.shをターミナルから実行します。

# ./create-android-project.sh

最初に、Javaのパッケージパスを入力します。

jp.milt.okahiro

次に、対象とするAndroidのバージョンをIDで指定します。
Android2.2以上対応のようなので、そのidの数字を入力します。

id: 5 or "android-8"
     Name: Android 2.2
     Type: Platform
     API level: 8

プロジェクト名を入力します。ここでは、iOS向けにXcodeで作成したプロジェクト名と同じにしておきます。

OkahiroCocos2dX

スクリプトが実行され、プロジェクト名のフォルダが作成されます。

このproj.androidフォルダを丸ごと、Xcodeのほうのプロジェクトにコピーします。

次に、cocos2d-2.0-x-2.0.4/platform/android/java/src/org/cocos2dx/libフォルダを中身ごと
proj.android/src/org/cocos2dxにコピーします。

更に、cocos2d-2.0-x-2.0.4の下にある、build_native.shを編集します。

NDK_ROOT="/Applications/android-ndk-r8b"  ←追加(32行目付近)
if [ -z "${NDK_ROOT+aaa}" ];then
...
COCOS2DX_ROOT="/Users/Rita/Documents/cocos2dx/cocos2d-2.0-x-2.0.4"  ←修正(40行目付近)

ここまで来たら、一度build_native.shを実行してみます。

# cd /Users/Rita/Documents/workspace/xcode/OkahiroCocos2dX/OkahiroCocos2dX/proj.android/
# ./build_native.sh

最初の1回は時間がかかります。
うまくいかない場合は、パスが間違っていないかなどを確認します。

以降、C++のソースを修正したらbuild_native.shを実行してコンパイルして、Androidで動かすことになります。


最後に、Eclipseにプロジェクトを取り込みます。
New→Android Project from Existing Codeを選びます。

Root Directoryはproj.androidを指定します。

Eclipse上でRun As→Android Applicationと操作し、実行されるのを確認します。
シミュレーターは遅いので、実機で確認したほうがいいと思います。

以上で、Androidの環境が整いました。
C++のソースやResourcesフォルダ内の画像などはiOSAndroid共通で使える構成になっているので、
ひとつ直せばどちらにも対応できて便利です。

cocos2d-xでの開発は、Xcodeで開発してiOSシミュレーターで動作確認、
ある程度作るごとにbuild_native.shを実行してAndroidで動作確認をするというやり方が良いようです。