決して仕事をサボってるわけではありません。
今日はcocos2d-xを使ってiOSとAndroidの両方でアプリを動かす最初の環境構築をめもめも。
開発環境はMacOS X 10.8.3です。
Xcodeのインストールとeclipseのインストール、Androidアプリ開発環境は整備済みとします。
ちなみに、Cocos2d xをさらにさわってみよう!のスライドとがおまるさんのcocos2d-x環境構築〜Androidテンプレート起動までその1がとても参考になりますよ!
長いので手順を記しておきます。
1)cocos2d-xをDLしテンプレートインストール
2)Android側の準備
3)Xcode側でHelloWorld作成&起動
4)Android側でプロジェクト作成し、フォルダをXcode側へコピーしbuild_native.shの実行
5)eclipseへ取り込み、Android端末で起動
6)拍手
となります。
まず、お決まりのcocos2d-x本体をDLしましょう。
2013.06.06時点での安定版最新はv2.0.4でした。
解凍して適当なディレクトリへ置きましょう。
$ unzip cocos2d-2.0-x-2.0.4.zip $ mkdir ~/Documents/cocos2dx $ mv cocos2d-2.0-x-2.0.4 ~/Documents/cocos2dx/v2.0.4 # 以下は好みに合わせてね $ ln -s ~/Documents/cocos2dx/v2.0.4 ~/Documents/cocos2dx/current
次にcocos2d-xのテンプレートをインストールしちゃいます。
$ sudo ~/Documents/cocos2dx/current/install-templates-xcode.sh
これでとりあえずXcodeでcocos2d-xのテンプレートを選択できるようになり、そのプロジェクトが作れます。
もちろんHelloWorldアプリも起動しますよ。
とりあえず拍手しましょう。
では、Android側の準備をしましょう。
AndroidNDKをDLして好きなディレクトリへ置きます。※すでにしてる人は要らない。
$ ls -l /Devloper drwxr-xr-x@ 19 koexuka staff 646 5 10 14:57 android-ndk-r8d
次にcreate-android-project.shを編集します。
このファイルはAndroidでcocos2d-xプロジェクトを新規作成するときに実行するファイルです。
$ vim ~/Documents/cocos2dx/current/create-android-project.sh ------------------------------------------------------ 7 # set environment paramters 8 NDK_ROOT_LOCAL="/Developer/android-ndk-r8d" 9 ANDROID_SDK_ROOT_LOCAL="/Developer/android-sdk-macosx" # Android-SDKの配置されているPATHに
次にtemplate/android以下にあるbuild_native.shを編集します。
$ vim ~/Documents/cocos2dx/current/template/android/build_native.sh ------------------------------------------------------ 1 APPNAME="__projectname__" 2 3 # 以下を追加 4 NDK_ROOT=__ndkroot__ 5 COCOS2DX_ROOT=__cocos2dxroot__ 6 GAME_ROOT=$COCOS2DX_ROOT/__projectname__ 7 GAME_ANDROID_ROOT=$GAME_ROOT/proj.android 8 RESOURCE_ROOT=$GAME_ROOT/Resources 9 〜(中略)〜 46 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 47 # ... use paths relative to current directory 48 # 二重定義になっちゃうので以下をコメントアウト(COCOS2DX_ROOT) 49 #COCOS2DX_ROOT="$DIR/../.." 50 APP_ROOT="$DIR/.."
これを記述しておくと、Android用プロジェクトを作成するたびにbuild_native.shを編集する手間が減ります。
これでAndroid側の準備も完了。
ではHelloWorldアプリを作りましょう。
まずXcodeで、TestCocos2dxプロジェクトを作成しましょう。
プロジェクト名は「TestCocos2dx」にします。
で最後にCreateしちゃいましょう。
できたぜ、Hello World!
次はAndroidで動くようにします。
さっき編集したcreate-android-project.shを実行します。
$ ~/Documents/cocos2dx/current/create-android-project.sh # 1)パッケージ名入力。 jp.blogspot.koexuka.app.test # 2)AndroidターゲットIDの入力。なぜか僕はいつもid:2(android v2.2以上)を選択します。 2 # 3)最後にプロジェクト名。iOS側と合わせておいたほうが分かりやすいかも。 TestCocos2dx
そうすると配置したcocos2dxディレクトリ以下にプロジェクトディレクトリができます。
$ ls -l ~/Documents/cocos2dx/current drwxr-xr-x 5 koexuka staff 170 6 6 17:22 TestCocos2dx
できたプロジェクトディレクトリの中にproj.androidというディレクトリがあります。
$ ls -l ~/Documents/cocos2dx/current/TestCocos2dx drwxr-xr-x 6 koexuka staff 204 6 6 20:22 Classes drwxr-xr-x 5 koexuka staff 170 6 6 20:22 Resources drwxr-xr-x 17 koexuka staff 578 6 6 20:22 proj.androidこれをXcodeのプロジェクトディレクトリ側へ持っていきます。
ここが分かりにくいですが、Finderを二つ並べてドラッグ&ドロップします。
別に問題ないとは思いますが、Xcode側のプロジェクトが無駄に大きくなってしまうので
proj.androidフォルダをXcode上へドロップしないようにしましょう。
もう1つ面倒な作業をします。
cocos2d-xのAndroid用javaプログラムファイルを、先ほどのXcode側のフォルダへ移します。
$ cp -R ~/Documents/cocos2dx/current/cocos2dx/platform/android/java/src/org/cocos2dx/lib ~/Documents/XcodeProject/TestCocos2dx/proj.android/src/org/cocos2dx図解すると以下の様な感じ。
ここまで来れば90%出来たも同然!
ではAndroid用にビルドさせます。
$ cd ~/Documents/XcodeProject/TestCocos2dx/proj.android $ ./build_native.sh
最初は時間がかかるので、しばらくジーッと画面を見つめておきます。
うまくいくと最後に
Compile++ thumb : box2d_static <= b2World.cpp Compile++ thumb : box2d_static <= b2WorldCallbacks.cpp Compile++ thumb : box2d_static <= b2Rope.cpp StaticLibrary : libbox2d.a SharedLibrary : libgame.so Install : libgame.so => libs/armeabi/libgame.so make: Leaving directory `/Users/koexuka/Documents/XcodeProject/TestCocos2dx/TestCocos2dx/proj.android'のような表示になります。
もしここでコケる場合、build_native.shの内容を見なおす必要があります。
PATHの指定とか間違えてるかも!?
では出来たファイルをeclipseへ取り込むぜ。
eclipseを起動し、「File」→「New」→「Project...」と進み、
「Android」内にある「Android project from Existing Code」を選択しNext!
「Root Directory」は先ほどのXcodeプロジェクト内のproj.androidを選択します。
オッケー!!これでeclipseにプロジェクトが組み込まれたはず!
ではAndroid端末をPCへ接続しドキドキしながらRunボタンを押下仕様じゃないか!
ほら動いた!
あ、ちなみにcocos2d-xはAndroidエミュレータで起動できませんのであしからず。。。
開発手順ですが、基本的にはXcodeで開発します。
Android端末での動作を確認したい場合は、
1)build_native.shを実行
2)eclipse画面へ
3)eclipseのRunボタン押下
だけでOKです。
Resourceフォルダ以下へ画像や音声ファイルを追加しても、勝手にbuild_native.shが取り込んでlibgame.soを生成してくれるので
その辺は気にしなくてOKですよ!
あー、長かった!
※2013.06.20 Android.mkについて追記
とても大事な事を書き忘れていました(汗
上記のようにiOS/Androidでのクロスプラットフォーム向け開発環境を構築して開発開始してからですが、
上述したとおり基本的にはXcodeで開発をします。
Androidへの転送手順も上述のとおりなのですが、その際に「Android.mkの編集」という作業が必要になります。
このファイルは、新しくクラスファイルを追加した場合など、都度編集しなければいけません。
vim proj.android/jni/Android.mk --------------------------------------- LOCAL_SRC_FILES := hellocpp/main.cpp ¥ ../../Classes/AppDelegate.cpp ¥ ../../Classes/HelloWorldScene.cpp ¥ ../../Classes/MyClass.cpp ¥ # ←のように自作ファイル(.cppのみ)を追記 ../../Classes/Utils/MyUtil.cpp ¥ # ←どんどん追記していく 〜(略)〜
もしBox2Dを使っている場合などは、
vim proj.android/jni/Android.mk -------------------------------------- LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes ¥ $(LOCAL_PATH)/../../libs/cocos2dx/Box2D ¥ # ←とか $(LOCAL_PATH)/../../libx/cocos2dx/cocoa ¥ # ←必要だったこれとか 〜(略)〜のように書いていく必要があります。
ちなみに未確認ですが、
Cocos2d-xで新しく作ったクラスを毎回Android.mkに追加せずに済ます
のようにして簡略化させることもできるそうです。
以上でぇぇぇぇぇえええす。
0 件のコメント:
コメントを投稿