「cocos2d x」の開発環境が更に快適に! -Xcode4対応版

はじめに
前回のコラムではXcode3を前提とした導入についてご紹介しましたが、 現在はiOS5にも対応したXcode4がスタンダードとなりつつあります。 cocos2dxはXcode4にも対応していますが、iPhoneとAndroidの同時開発を行うためには Xcode3より複雑な手順が必要となりますので、今回はXcode4での導入方法についてご紹介いたします。Xcode4での相違点
(1)フォルダ構成
Xcode4でcocos2dxを導入する際、最も大きな問題となるのがプロジェクトのフォルダ構成です。 Xcode3では下図のように、プロジェクト名フォルダの直下にClassesフォルダが配置されており、 Android用プロジェクトと同じフォルダ構成になっています。 そのため前回のコラムで紹介したように、Android用プロジェクトと共通のClassesフォルダを使うことができました。(2)重複プロジェクト名の削除
Xcode3での導入手順では、まず最初にAndroid用プロジェクトを作成し、 次にXcode3で同名の新規プロジェクトを立ち上げ、Android用プロジェクトフォルダに上書きして作成していました。 ですがXcode4で同様の手順を行うと、上書き時にそれまで存在していたフォルダは削除されてしまいます。 そのため先に作成したAndroid用プロジェクトが消えるようになってしまいました。対応策
これらの相違点による問題を解決する方法をご紹介いたします。 まずはcreate-android-project.shでAndroid用プロジェクトを作成します。 今回はプロジェクト名を「example2」としました。 前項(2)の通り、Xcode4で同名のプロジェクトを作成すると、 今作成したAndroid用プロジェクトフォルダが消えてしまいますので、 一旦フォルダ名を「example2_bak」のように変更します。※Xcode4用テンプレートのインストールをしていない場合、事前に「install-templates-xcode.sh」でのインストールを行ってください。詳しくは前回のコラムを参照
まずXcode4を起動して「Create a new Xcode project」をクリック。
iOS内の「cocos2d-x」を選択するとcocos2dx用のテンプレートが表示されますので、「cocos2dx」を選択して「Next」ボタンをクリック。
Product Nameに「example2」、Company Identifierに「jp.mdlab」を入力して、「Next」をクリック。
プロジェクト保存画面が表示されますので、cocos2d-1.0.1-x-0.10.0フォルダを選択した状態で「Create」をクリック。
これでXcode4用に「example2」プロジェクトが作成されました。
Xcode4用のプロジェクトが作成された、先ほどフォルダ名を変更した「example2_bak」の中にある android、Classes、Resourcesフォルダを、example2/example2の中に移動し、上書きします。
これで共通のソース(Classesフォルダ)をiPhone/Androidどちらからも参照できるようになりました。
ですがこのままではAndroid用のビルドがうまくいきません。 一階層深いフォルダ構成に強引に変更したので、それに合わせて各種設定を変更する必要があります。
example2/example2/android/build_native.sh
GAME_ROOT=$COCOS2DX_ROOT/example2/example2
example2/example2/android/jni/Android.mk
subdirs := $(addprefix $(LOCAL_PATH)/../../../../,$(addsuffix /Androids.mk, \
example2/example2/android/jni/helloworld/Android.mk
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../../cocos2dx \
$(LOCAL_PATH)/../../../../../cocos2dx/platform \
$(LOCAL_PATH)/../../../../../cocos2dx/include \
example2/example2/Classes/Android.mk
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../cocos2dx \
$(LOCAL_PATH)/../../../cocos2dx/platform \
$(LOCAL_PATH)/../../../cocos2dx/include \
$(LOCAL_PATH)/../../../CocosDenshion/include \
$(LOCAL_PATH)/../../../cocos2dx/lua_support
LOCAL_LDLIBS := -L$(call host-path, $(LOCAL_PATH)/../android/libs/$(TARGET_ARCH_ABI)) \
-lcocos2d -lcocosdenshion \
-L$(call host-path, $(LOCAL_PATH)/../../../cocos2dx/platform/third_party/android/libraries/$(TARGET_ARCH_ABI))
あとはXcode3での導入時と同様にbuild_native.shでビルドを行い、 Eclipseでプロジェクトフォルダを読み込めば動作確認を行うことができます。 読み込むフォルダも一階層深くなっていますのでご注意ください。
テンプレート展開シェル
前項の対応を行うことでXcode3と同様にiPhone/Androidでの同時開発が可能になるのですが、 新規プロジェクト作成時に毎回この作業を行うのは手間がかかってしまいます。 そこでこの作業を自動的に行ってくれる、Xcode4対応版テンプレート展開プログラムを作成しました。
まずはテンプレート展開プログラムをダウンロード。 下記のようにcocos2dxフォルダ配下に格納してください。
※Android SDK/NDKインストール場所によって「create-android-project-xcode4.sh」内の設定変更が必要です。[NDK_ROOT]と[ANDROID_SDK_ROOT]を環境に合わせて修正してください。詳しくは前回のコラムを参照
続いてXcode4で新規プログラムを作成します。 この作業は前項と同様です。ここでのプロジェクト名は「example3」にしました。
最後にXcode4対応版テンプレート展開プログラムを起動します。 cocos2dxフォルダ内でcreate-android-project-xcode4.shを実行。 入力項目はcreate-android-project.shと同様です。
必要項目を入力するとXcode4用に設定が変更された各種ファイルが example3/example3配下に格納されています。
尚、この展開プログラムは一時的に [プロジェクト名]tmp フォルダを作成します。 (今回の例では、example3tmpフォルダが一時的に作成されます) 既に同名のフォルダが存在していた場合、正常に稼動しない可能性がありますのでご注意ください。
まとめ
Xcode4での開発にも対応することで、より多くの方にcocos2dxを触ってもらえる機会が増えたのではないでしょうか。 次回以降はもう少し実践的な使い方などをご紹介します。
cocos2dxシリーズ
- クロスプラットフォームの新しい選択肢「cocos2dx」でスマートフォンアプリを開発! -導入編
- 「cocos2d x」の開発環境が更に快適に!! -Xcode4対応版
クロスプラットフォーム開発について質問、興味などありましたら、
「マルチデバイスLab.」までお気軽にお問い合わせください。
※株式会社アイ・エム・ジェイのお問い合わせフォームに移動します。
サービスに関するお問い合わせ
