プログラミングノート

一からものを作ることが好きなエンジニアの開発ブログです。

cocos2d-xの環境構築メモ

cocos2d関連の書籍は色々と見ていたのですが、先日発売されたこちらの書籍が内容も充実していて分かりやすかったため、この内容を参考に勉強して行くことに決定。

cocos2d-xではじめるスマートフォンゲーム開発 [cocos2d-x Ver.3対応] for iOS/Android

cocos2d-xではじめるスマートフォンゲーム開発 [cocos2d-x Ver.3対応] for iOS/Android

iOSとAndroid開発環境はそれぞれ既に構築してあるので、差分のみ実行。既存の環境はこんな感じ。Android SDKの各バージョンもAndroid SDK Managerからインストール済みの状態。

  • Xcode 6.1.1
  • Android Studio 1.0.2
  • JDK8 (1.8.0_25)
  • Python 2.7.5

cocos2d-xのセットアップ

Android SDK

Android Studioをインストールすると、Android Studio.app/sdkと、アプリのパッケージ内にSDKがインストールされていたため下記パスに移動。(Android StudioのSDKのパス設定は、File > Other Settings > Default Project Structure.. から)

~/tools/android/sdk

Android NDK

NDKはこちらからDLできますが、最新版だとビルドできないらしいので、こちらからリビジョンr9dも取得して両方設置。

~/tools/android/ndk/android-ndk-r9d
~/tools/android/ndk/android-ndk-r10d

Apache ANT

こちらからDLして下記パスに設置。

~/tools/android/ant

Eclipse

残念ながらAndroid StudioはまだNDKに対応していないらしく、cocos2d-xのプロジェクトがそのままでは利用できないようだったので、Eclipseの環境を作ることに。こちらからEclipseをDLして、ADTプラグインを追加、SDKとNDKのパスを設定、C/C++のBuild/EnvironmentにNDK_ROOTを設定して完了。

環境変数の追加

ANDROID_SDK_ROOT=/Users/ntaku/tools/android/sdk
NDK_ROOT=/Users/ntaku/tools/android/ndk/android-ndk-r9d
ANT_ROOT=/Users/ntaku/tools/android/ant/bin

cocos2d-x

こちらのページよりcocos2d-xのv3.3をダウンロードして下記パスに設置。

~/tools/cocos2d-x/3.3

セットアップスクリプトを実行して完了。

$ cd tools/cocos2d-x/3.3/
$ ./setup.py
Setting up cocos2d-x...
->Check environment variable COCOS_CONSOLE_ROOT
  ->Search for environment variable COCOS_CONSOLE_ROOT...
    ->COCOS_CONSOLE_ROOT not found

  -> Add COCOS_CONSOLE_ROOT environment variable...
    ->Added COCOS_CONSOLE_ROOT=/Users/ntaku/tools/cocos2d-x/3.3/tools/cocos2d-console/bin

->Check environment variable COCOS_X_ROOT
  ->Search for environment variable COCOS_X_ROOT...
    ->COCOS_X_ROOT not found

  -> Add COCOS_X_ROOT environment variable...
    ->Added COCOS_X_ROOT=/Users/ntaku/tools/cocos2d-x/3.3

->Check environment variable COCOS_TEMPLATES_ROOT
  ->Search for environment variable COCOS_TEMPLATES_ROOT...
    ->COCOS_TEMPLATES_ROOT not found

  -> Add COCOS_TEMPLATES_ROOT environment variable...
    ->Added COCOS_TEMPLATES_ROOT=/Users/ntaku/tools/cocos2d-x/3.3/templates

->Check environment variable NDK_ROOT
  ->Search for environment variable NDK_ROOT...
    ->NDK_ROOT is found : /Users/ntaku/tools/android/ndk/android-ndk-r9d

->Check environment variable ANDROID_SDK_ROOT
  ->Search for environment variable ANDROID_SDK_ROOT...
    ->ANDROID_SDK_ROOT is found : /Users/ntaku/tools/android/sdk

->Check environment variable ANT_ROOT
  ->Search for environment variable ANT_ROOT...
    ->ANT_ROOT is found : /Users/ntaku/tools/android/ant/bin

cocos2d-xの新規プロジェクト作成

これで各プラットフォーム毎のC++の新規プロジェクトが作成される。

$ cocos new HelloCocos -p com.appstair.HelloCocos -l cpp -d ~/project/cocos2d

iOS

HelloCocos/proj.ios._mac/HelloCocos.xcodeprojを開いてビルド&実行すればOK。簡単。

f:id:ntaku:20150108234404p:plain

Android

インポートする必要があるのはこの2つ。

  • HelloCocos/proj.android (HelloCocos)
  • HelloCocos/cocos2d/cocos/platform/android/java (libcocos2dx)

これでビルドしてみたところ、「Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lorg/cocos2dx/lib/Cocos2dxAccelerometer」というエラーが発生して失敗するので、HelloCocosの方のProperties > Android の項目内にある Libraryの設定からlibcocos2dxをRemoveする。

今度はアプリが起動するタイミングでクラッシュしてしまう。x86のシミュレーターだとNGらしい。Genymotionのケースでこちらを参考にコードを修正。

HelloCocos/proj.android/jni/Application.mk

APP_STL := gnustl_static
APP_ABI := armeabi x86
APP_CPPFLAGS := ~~frtti~~DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -DCOCOS2D_DEBUG=1

これでx86でも動作した。Genymotionでは色々試すも上手く行かなかったので、今回はとりあえずこれでいいか...

f:id:ntaku:20150108234424p:plain