Cocos2d-x3.0rcで新規プロジェクト作成してandroid実機で動かす
はじめに
いつもどおり開発中のアプリのプロジェクトでcheckoutしてビルドしたらちょっとiOSのソースがエラーになったので、一旦新規プロジェクトつくって変更点を確認してみることにしました。
変更履歴は一応見たのですが、さすがに全コミットログまで見てる時間ないので、実際にプロジェクト作って動かしてみたほうが早いかと思います。
セットアップ
git pull してcheckout
省略します。わからない方は前回のエントリーをご参考にしてください。
Cocos2d-x3.0betaきたのでさっそく対応しました
setup.pyを叩く
cocos2d-xビルドに必要な環境変数のセットアップ用の.pyみたいです。
優しいですね。
事前に設定済みの環境変数は削除しておきました。
しかし、こんなのでハマるのきっと俺くらいwwww
$ python setup.py Setting up cocos2d-x... -> Adding COCOS2D_CONSOLE_ROOT environment variable... OK -> Added: COCOS_CONSOLE_ROOT = /Applications/cocos2d-x/tools/cocos2d-console/bin -> Looking for NDK_ROOT envrironment variable... NOT FOUND Please enter its path (or press Enter to skip): /Applications/android_ndk ADDED -- Added: NDK_ROOT = /Applications/android_ndk -> Looking for ANDROID_SDK_ROOT envrironment variable... NOT FOUND Please enter its path (or press Enter to skip): /Applications/android-sdk-macosx Error: /Applications/android-sdk-macosx is not a valid path of ANDROID_SDK_ROOT. Ignoring it. Set up successfull: COCOS_CONSOLE_ROOT was added into /Users/kyokomi/.bash_profile NDK_ROOT was added into /Users/kyokomi/.bash_profile
ANDROID_SDK_ROOTがcocos2d-xが求めてるものじゃなかったらしい。
仕方ないのでpython初心者の私がsetup.pyを覗く。
android_path = os.path.join(android_sdk_root, 'sdk/tools/android') if os.path.isfile(android_path): return True else: return False
( ゚д゚)ポカーン...
自分の環境だとsdkってディレクトリがない。
なんだよなー。。。
ということで、いつものシンボリックリンク作戦でいきます。
$ cd /Applications/android-sdk-macosx $ ln -s ./ sdk
ワンモアっせ!
$ ./setup.py Setting up cocos2d-x... -> Adding COCOS2D_CONSOLE_ROOT environment variable... ALREADY ADDED -> Looking for NDK_ROOT envrironment variable... FOUND -> Looking for ANDROID_SDK_ROOT envrironment variable... NOT FOUND Please enter its path (or press Enter to skip): /Applications/android-sdk-macosx ADDED -> Added: ANDROID_SDK_ROOT = /Applications/android-sdk-macosx Set up successfull: ANDROID_SDK_ROOT was added into /Users/kyokomi/.bash_profile
ばっちりできたー!
プロジェクト作成
cocosコマンドでプロジェクト作成
README.mdいわく、以下みたいな感じでプロジェクト作成らしい。
せっかくbetaからだっけ?GUI作ったのにもう廃止なんですね。(人気なかったのかな。。。)
$ cocos new Cocos2dx3.0rcSample -p com.kyokomi.cocos2dx.rcsample -l cpp -d /Users/kyokomi -bash: cocos: command not found
( ゚д゚)ポカーン...( ゚д゚)ハッ!
さっき追加した環境パスとりこんでないですね。
コンソール閉じてもっかい開くか以下コマンドで環境パス読み込む。
$ source ~/.bash_profile
気を取り直してもう一度。
$ cocos new Cocos2dx3.0rcSample -p com.kyokomi.cocos2dx.rcsample -l cpp -d /Users/kyokomi > Copy template into /Users/kyokomi/Cocos2dx3.0rcSample > Copying cocos2d-x files... > Rename project name from 'HelloCpp' to 'Cocos2dx3.0rcSample' > Replace the project name from 'HelloCpp' to 'Cocos2dx3.0rcSample' > Replace the project package name from 'org.cocos2dx.hellocpp' to 'com.kyokomi.cocos2dx.rcsample'
かるく構造みてみる
$ cd /Users/kyokomi/Cocos2dx3.0rcSample $ tree -L 1 . ├── CMakeLists.txt ├── Classes ├── Resources ├── cocos2d ├── proj.android ├── proj.ios_mac ├── proj.linux └── proj.win32 7 directories, 1 file
またcocos2dがいるぞ。結局コピーするんかい!!
っと思ったけど、よく見るとtool関係がない。
kyokomi@kyokomi-no-MacBook-Air:~/Cocos2dx3.0rcSample/cocos2d $ tree -L 1 . ├── AUTHORS ├── CHANGELOG ├── CMakeLists.txt ├── README.md ├── build ├── cocos ├── docs ├── extensions ├── external ├── licenses └── plugin 7 directories, 4 files
ちなみにこっちは、git checkout したやつ。
kyokomi@kyokomi-no-MacBook-Air:/Applications/cocos2d-x ((cocos2d-x-3.0rc)) $ tree -L 1 . ├── AUTHORS ├── CHANGELOG ├── CMakeLists.txt ├── README.md ├── build ├── cocos ├── docs ├── extensions ├── external ├── licenses ├── plugin ├── projects ├── samples ├── setup.py ├── templates ├── tests └── tools 12 directories, 5 files
きっと/Application下とかにベースとなるcocos2d-xがいて、そこから各プロジェクトに必要なコードだけcocos2dディレクトにコピーする方針ですね。
ってことは、これからはcocos2dもコミット管理しますかね。
あれ、まさかbeta2の時も実はそうだった?
(まあいっか( ^ω^;))
ビルドして動作確認
androidのほうビルドします
いっぱつ叩いて引数エラーだしてヘルプみる作戦。。。逆に失敗!!!
kyokomi@kyokomi-no-MacBook-Air:~/Cocos2dx3.0rcSample/proj.android $ ./build_native.py The Selected NDK toolchain version was 4.8 ! ... 省略 ... [armeabi] Install : libcocos2dcpp.so => libs/armeabi/libcocos2dcpp.so make: Leaving directory `/Users/kyokomi/Cocos2dx3.0rcSample/proj.android'
なるほど、ndkだけビルドして終わった。ちゃんとビルドも成功
一応helpみると大体beta2の時と同じだった。
$ ./build_native.py --help Usage: build_native.py [options] Options: -h, --help show this help message and exit -n NDK_BUILD_PARAM, --ndk=NDK_BUILD_PARAM parameter for ndk-build -p ANDROID_PLATFORM, --platform=ANDROID_PLATFORM parameter for android-update.Without the parameter,the script just build dynamic library for project. Valid android-platform are:[10|11|12|13|14|15|16|17|18|19] -b BUILD_MODE, --build=BUILD_MODE the build mode for java project,debug[default] or release.Get more information,please refer to http://developer.android.com/tools/building/building- cmdline.html
apkつくる
$ ./build_native.py -p 19 -b debug The Selected NDK toolchain version was 4.8 ! ... 省略 ... debug: BUILD SUCCESSFUL Total time: 9 seconds
adb installで実機にインストール
$ adb install bin/Cocos2dx3.0rcSample-debug.apk * daemon not running. starting it now on port 5037 * * daemon started successfully * 4425 KB/s (1734574 bytes in 0.382s) pkg: /data/local/tmp/Cocos2dx3.0rcSample-debug.apk Success
ばっちり動いてます。
なんかLabelがシュッとしててカッコイイですね。
あと、FPSが詳細な感じになってる。
adb logcatみたら、まだ例のエラーが。。。これ自分の端末のが悪いのかな?バグなのか???
※Galaxy Nexusです。
E/cocos2d-x assert(22353): /Users/kyokomi/Cocos2dx3.0rcSample/proj.android/../cocos2d/cocos/2d/renderer/CCQuadCommand.cpp function:generateMaterialID line:64 D/cocos2d-x debug info(22353): Assert failed: ShaderID is greater than 2^10 E/cocos2d-x assert(22353): /Users/kyokomi/Cocos2dx3.0rcSample/proj.android/../cocos2d/cocos/2d/renderer/CCQuadCommand.cpp function:generateMaterialID line:64 D/cocos2d-x debug info(22353): Assert failed: ShaderID is greater than 2^10 E/cocos2d-x assert(22353): /Users/kyokomi/Cocos2dx3.0rcSample/proj.android/../cocos2d/cocos/2d/renderer/CCQuadCommand.cpp function:generateMaterialID line:64