cocos2d-xの環境構築メモ
cocos2d関連の書籍は色々と見ていたのですが、先日発売されたこちらの書籍が内容も充実していて分かりやすかったため、この内容を参考に勉強して行くことに決定。
cocos2d-xではじめるスマートフォンゲーム開発 [cocos2d-x Ver.3対応] for iOS/Android
- 作者: 三木康暉
- 出版社/メーカー: 技術評論社
- 発売日: 2014/12/27
- メディア: 大型本
- この商品を含むブログを見る
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
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。簡単。
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では色々試すも上手く行かなかったので、今回はとりあえずこれでいいか...