お問い合わせ

Framework

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

Posted on:
2012.1.31
Posted by:
田野 哲也
Tag : :
,
,
,

はじめに

前回のコラムではXcode3を前提とした導入についてご紹介しましたが、 現在はiOS5にも対応したXcode4がスタンダードとなりつつあります。 cocos2dxはXcode4にも対応していますが、iPhoneとAndroidの同時開発を行うためには Xcode3より複雑な手順が必要となりますので、今回はXcode4での導入方法についてご紹介いたします。

Xcode4での相違点

(1)フォルダ構成

Xcode4でcocos2dxを導入する際、最も大きな問題となるのがプロジェクトのフォルダ構成です。 Xcode3では下図のように、プロジェクト名フォルダの直下にClassesフォルダが配置されており、 Android用プロジェクトと同じフォルダ構成になっています。 そのため前回のコラムで紹介したように、Android用プロジェクトと共通のClassesフォルダを使うことができました。 xcode3_proj.png ですがXcode4では、プロジェクト名フォルダの下にさらにプロジェクト名フォルダが作られ、その中にClassesフォルダが配置されています。 つまりAndroid用プロジェクトよりも1階層深い位置にClassesフォルダが存在しています。 xcode4_proj.png これにより、共通のソース(Classesフォルダ)を使用したiPhoneとAndroidの同時開発を行うことが Xcode3と同じ導入手順ではできなくなってしまいました。

(2)重複プロジェクト名の削除

Xcode3での導入手順では、まず最初にAndroid用プロジェクトを作成し、 次にXcode3で同名の新規プロジェクトを立ち上げ、Android用プロジェクトフォルダに上書きして作成していました。 ですがXcode4で同様の手順を行うと、上書き時にそれまで存在していたフォルダは削除されてしまいます。 そのため先に作成したAndroid用プロジェクトが消えるようになってしまいました。

対応策

これらの相違点による問題を解決する方法をご紹介いたします。 まずはcreate-android-project.shでAndroid用プロジェクトを作成します。 今回はプロジェクト名を「example2」としました。 前項(2)の通り、Xcode4で同名のプロジェクトを作成すると、 今作成したAndroid用プロジェクトフォルダが消えてしまいますので、 一旦フォルダ名を「example2_bak」のように変更します。 column2_xcode3.png 続いてXcode4でのiPhone用プロジェクト作成です。

※Xcode4用テンプレートのインストールをしていない場合、事前に「install-templates-xcode.sh」でのインストールを行ってください。詳しくは前回のコラムを参照

まずXcode4を起動して「Create a new Xcode project」をクリック。

column2_xcode1.png

iOS内の「cocos2d-x」を選択するとcocos2dx用のテンプレートが表示されますので、「cocos2dx」を選択して「Next」ボタンをクリック。

column2_xcode2.png

Product Nameに「example2」、Company Identifierに「jp.mdlab」を入力して、「Next」をクリック。

column2_xcode3.png

プロジェクト保存画面が表示されますので、cocos2d-1.0.1-x-0.10.0フォルダを選択した状態で「Create」をクリック。

column2_xcode4.png

これでXcode4用に「example2」プロジェクトが作成されました。

column2_folder1.png

Xcode4用のプロジェクトが作成された、先ほどフォルダ名を変更した「example2_bak」の中にある android、Classes、Resourcesフォルダを、example2/example2の中に移動し、上書きします。

column2_folder2.png

これで共通のソース(Classesフォルダ)をiPhone/Androidどちらからも参照できるようになりました。

column2_folder3.png

ですがこのままでは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フォルダ配下に格納してください。

column2_folder4.png

※Android SDK/NDKインストール場所によって「create-android-project-xcode4.sh」内の設定変更が必要です。[NDK_ROOT]と[ANDROID_SDK_ROOT]を環境に合わせて修正してください。詳しくは前回のコラムを参照

続いてXcode4で新規プログラムを作成します。 この作業は前項と同様です。ここでのプロジェクト名は「example3」にしました。

column2_folder5.png

最後にXcode4対応版テンプレート展開プログラムを起動します。 cocos2dxフォルダ内でcreate-android-project-xcode4.shを実行。 入力項目はcreate-android-project.shと同様です。

column2_terminal1.png

必要項目を入力するとXcode4用に設定が変更された各種ファイルが example3/example3配下に格納されています。

column2_folder6.png

尚、この展開プログラムは一時的に [プロジェクト名]tmp フォルダを作成します。 (今回の例では、example3tmpフォルダが一時的に作成されます) 既に同名のフォルダが存在していた場合、正常に稼動しない可能性がありますのでご注意ください。


まとめ

Xcode4での開発にも対応することで、より多くの方にcocos2dxを触ってもらえる機会が増えたのではないでしょうか。 次回以降はもう少し実践的な使い方などをご紹介します。

cocos2dxシリーズ


クロスプラットフォーム開発について質問、興味などありましたら、
「マルチデバイスLab.」までお気軽にお問い合わせください。

※株式会社アイ・エム・ジェイのお問い合わせフォームに移動します。
サービスに関するお問い合わせ

このページのトップへ戻る