cocos2d-x

cocos2d-x でクロスプラットフォーム(iPhone, Android)開発環境の構築

マルチプラットフォーム開発が可能な 2D ゲームフレームワークである cocos2d-x の環境を Mac で構築します。この記事では、iOS(開発ツール:Xcode)及び Android(開発ツール:Eclipse)のアプリを実行するまでを紹介します。

手順

  1. 各種インストール(cocos2d-x, Eclipse, Android SDK, Android NDK, Xcode)
  2. プロジェクトの作成
  3. iOS(Xcode)でアプリを実行
  4. Android(Eclipse)でアプリを実行

1. 各種インストール(cocos2d-x, Eclipse + Android SDK, Android NDK, Xcode)

cocos2d-x のインストール

http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Download

cocos2d-x 公式サイトダウンロードページから、cocos2d-x をダウンロードします。「cocos2d-x-2.1.4.zip @ June.18, 2013」を使用しました。展開後、【/Applications】に置きました。

Eclipse および Android SDK のインストール

http://developer.android.com/sdk/index.html

Android アプリの開発には、Eclipse と Android SDK で行われます。それらの環境をまとめた状態で導入できる ADT Bundle for Mac を上記リンクよりダウンロードします。展開後、「android-sdk」とリネームし、【/Applications】に置きました

最近、それらの環境をまとめた Android Studio という開発ツールが登場しましたが、Android Studio は Android NDK にまだ対応していないため C++ のビルドを行うことができません(cocos2d-x は、C++ で記述する)。そのため、Eclipse + Android SDK で環境を構築していきます。

Android NDK

http://developer.android.com/tools/sdk/ndk/index.html

上記、リンクより Android NDK をダウンロードします。「android-ndk-r9-darwin-x86_64.tar.bz2」をダウンロードしました。展開後、「android-ndk」とリネームし、【/Applications】に置きました。

Android アプリは、通常 Java で開発されますが、Android NDK を導入することで C や C++ で記述できるようになります。Android からは JNI(Java Native Interface)により、C や C++ のプログラムを動作することが可能になります。

Xcode のインストール

https://itunes.apple.com/jp/app/xcode/id497799835?mt=12

App Store より、iOS アプリ開発に使用する Xcode(v4.6.3)をダウンロードします。

プロジェクトの作成

プロジェクトの作成に cocos2d-x にあるプロジェクト作成ツールを利用します。作成ツールでプロジェクトを作成することで、マルチプラットフォーム(iOS, Android)開発環境を準備することができます。

プロジェクト作成ツールは、python で書かれています。Mac に標準でインストールされている Terminal は、python を実行できるので、特に意識する必要はありません。Terminal を起動して、以下のコマンドを打ち込みます。

$ cd /Applications/cocos2d-x-2.1.4/tools/project-creator 
$ ./create_project.py -project MyProject -package com.rakuishi.myproject -language cpp
proj.ios		: Done!
proj.android		: Done!
proj.win32		: Done!
proj.mac		: Done!
proj.blackberry		: Done!
proj.linux		: Done!
proj.marmalade		: Done!
New project has been created in this path: /Applications/cocos2d-x-2.1.4/projects/MyProject
Have Fun!

ここでは、プロジェクト名:MyProject、パッケージ名:com.rakuishi.myproject としました。正常に処理されると、以下のディレクトリにプロジェクトが作成されています。

/Applications/cocos2d-x-2.1.4/projects/MyProject

こちらに、iOS 向けのプロジェクト(proj.ios)や Android 向けのプロジェクト(proj.android)が配置されています。基本的に、異なるプラットフォームで同じコードを共有します。Classes フォルダにヘッダーファイルとソースファイルに置き、Resources フォルダに画像などを置くのが、まもりたいルールとしてあるようです。

3. iOS(Xcode)でアプリを実行

では、iOS アプリとして実行していきます。以下のプロジェクトファイルを Xcode で起動します。起動後、Run(command + R)すれば、iOS Simulator に cocos2d-x が動作します。

/Applications/cocos2d-x-2.1.4/projects/MyProject/proj.ios/MyProject.xcodeproj

4. Android(Eclipse)でアプリを実行

iOS アプリのビルドはとても簡単でしたが、Android アプリのビルドはたくさん設定が必要になります。大変です。Eclipse を起動して、以下の設定を行います。

/Applications/android-sdk/eclipse/Eclipse.app

Linked Resources の設定

[ADT] → [環境設定…] → [General] → [Workspace] → [Linked Resources] → [New]

Name: COCOS2DX
Location: /Applications/cocos2d-x-2.1.4

Environment の設定

[ADT] → [環境設定…] → [C/C++] → [Build] → [Environment] → [Add]

Name: NDK_ROOT
Value: /Applications/android-ndk

Code Analytsis の設定

[ADT] → [環境設定…] → [C/C++] → [Code Analysis] → [▼Syntax and Semantic Errros] のチェックを外す。

ライブラリプロジェクト(libcocos2dx)を読み込む

[File] → [New] → [Project…] から New Project を立ち上げる。[Android] から [Android Project from Existing Code] を選択し、[Next >] を選択する。

[Browse…] から Root Directory にプロジェクトの場所を教えて、[Finish] を選択する。Eclipse の左カラムに libcocos2dx が追加される。

Root Directory: /Applications/cocos2d-x-2.1.4/cocos2dx/platform/android/java

プロジェクトを読み込む

上と同様の手順で、MyProject プロジェクトを読み込む。読み込み終わった後、ビルドが開始されます。

Root Directory: /Applications/cocos2d-x-2.1.4/projects/MyProject/proj.android

Android アプリを実行

ここまでくれば、後はアプリを実行するだけですが、標準生成されたプロジェクトを Eclipse で起動しようとすると以下のエラーが発生しました。

format not a string literal and no format arguments [-Werror=format-security]

Log 出力周りのフォーマット指定を MyProject/jni/Android.mk に記述すると修正されると思うのですが、よく分からなかったので以下のエラー部分をコメントアウトして対処しました。良い方法があったら、教えて頂けるとと嬉しいです。

/Applications/cocos2d-x-2.1.4/platform/android/CCCommon.cpp line: 44
/Applications/cocos2d-x-2.1.4/platform/android/CCCommon.cpp line: 54
/Applications/cocos2d-x-2.1.4/CocosDenshion/android/SimpleAudioEngine.cpp line: 77
/Applications/cocos2d-x-2.1.4/CocosDenshion/android/opensl/OpenSLEngine.cpp line: 334
/Applications/cocos2d-x-2.1.4/CocosDenshion/android/opensl/SimpleAudioEngineOpenSL.cpp line: 41

上記を修正後、Android の実機で cocos2d-x が動作します。Android Emulator での動作は、未確認です。