2013年6月15日土曜日

開発環境(Mac)の構築

それでは、MacにCocos2d-xでiOS, Android開発を行うプログラムのインストールや設定を行なってみます。今回は各Simulatorが動作するまでとします。

1. プログラムのインストール

次のプログラムを標準的な方法でインストールする
関連プログラムは /cocos  以下にフォルダを作って保存
プログラムインストール方法
XcodeMac App Storeからインストール
XCodeを起動して左上のXCode > Preferences
    Downloads > Componentsで次をインストール
    Command Line Tools
    iOS 6.1 Simulator (最新のものでOK)
Cocos2d-x最新版のCocos2d-xをダウンロード (例: cocos2d-2.1rc0-x-2.1.3.zip)
ターミナルで解凍してインストール 解凍したものも次に配置
$ cd /cocos
$ unzip cocos2d-2.1rc0-x-2.1.3.zip
$ cd cocos2d-2.1rc0-x-2.1.3
$ sudo ./install-templates-xcode.sh

→ Xcodeを起動 新規プロジェクトでcocos2d-xカテゴリのcocos2dx_box2dを選択
    ProductName, Company Identifierは任意 (例: CocosSample1, jp.ne.akbob)
    左上の「Run」をクリックして Simulatorが表示されればOK
Android用Eclipse
+環境設定


Android SDK  ダウンロードして 展開したものを /cocos にコピー
Android NDK  Mac 64bit版をダウンロードして /cocos にコピー
xxxxxsdk/eclipse/Eclipse  を起動
→  Java SEのインストールを要求されるのでインストール→完了後Eclipseを開く
→ ワークスペースの設定 /cocos/workspace とする
   (Use this as the default and do not ask againにチェック)
   Welcomeタブは閉じる
[プラグインの追加]
Help->Install New Software
   work with: Android Developer Tools Update Siteに
      Developer ToolsとNDK PLuginsを両方選択

[環境設定]
→ ADT(左上)→環境設定
    General>Workspace>Linked Resources → New
       Name   COCOS2DX   Folder 上記cocos2d-xのフォルダ
    C/C++>Build>Environment → Add
       Name  NDK_ROOT   value  上記NDKのフォルダ
→ Java>Editor>Typing (セミコロンとカッコの自動挿入)
    Automatically insert at correct positionのSemicolonとBracesにチェック
→General
   Open ModeをDouble Click -> Single Clickに変更(選んだらすぐ開く)
→General>Editors>Text Editors
    Show print margin, Show line numbersにチェック マージンカラム数を 80 → 100に
→General>Workspaceの
   Text file encoding  をSJISから  Other > UTF-8に
→ File>New>Other    Android>Android Project from Existing code
        Root Directoryに保存したcocos2dxの  cocos2dx/ を選択
        libcocos2dxプロジェクトにチェックが入っている状態でFinish


Android用
プロジェクト
の作成テスト
ターミナルでcocos2dxのフォルダで以下を実施
$ vi create-android-project.sh
先頭の NDK_ROOT_LOCAL と ANDROID_SDK_ROOTLOCALを正しく記述
NDK_ROOT_LOCAL="/cocos/android-ndk-r8e"
ANDROID_SDK_ROOT_LOCAL="/cocos/adt-bundle-mac-x86_64-20130522/sdk"

$ ./create-android-project.sh
パッケージ名  jp.ne.akbob
ターゲットID  1
プロジェクト名  Sample1
$ cd Sample1/proj.android/
$ vi build_native.sh
APPNAME="Sample1"   // この下に追記
NDK_ROOT=/cocos/android-ndk-r8e

$ ./build_native.sh

Eclipseからこのプロジェクトを取り込む (さっきと同じ既存プロジェクトを取り込む)
Sample1/proj.android/
android-8がないとエラーが表示されている
   Sample1プロジェクトの res/drawable-xxx/ に icon.pngファイルがないのが原因
   cocos2dxのplugins/samples/HelloAds/proj.android/res/drawable-xx/ からicon.pngファイルを取り込む
   (xdpiはないので何もしない。取り込むときはCopy Filesとする)

エラーがなくなるのでプロジェクトを右クリック>Run as > Android Application
AVD Error が表示 → Android Virtual Deviceを作成
   Launch a new android virtual deviceを選択 > Manage > New
   NexusSで作る  名前は適当(例 NexusS)  Targetも 4.2.2を選択
   カメラも両面Emulated、SDカード 128MB  (おまけ)
   Use Host GPUにチェックを入れる(重要!)
   ウィンドウを閉じて前の画面で Refresh > nexus7を選択して OK
   ※ Nexus4/7/10でもいいが解像度が大きいと重そうなので480x800にした
もう一度 Run as > Android Application
   Make your self at home 画面→ OK (次回からはロックされているので解除する)
   しばらくするとアプリが起動する 

Custom Locale で ja_JPを選択しておく
Eclipseを閉じるときは Always exit without prompt にチェック

[エラーケース]
※ Emulatorは標準では OpenGL2.0に対応していない 
   configSpecのエラーが出る(Cocs2dxActivity.javaの カラーは意図的に変更させている)   

※ Debug Certificateが期限切れと表示された場合 ターミナルで
$ cd /Users/xxxxxx/.android
$ rm debug.certificate

※ 動かなかったらもう一度 Run> Run を実行
※ Icon.pngエラー  icon.pngとファイル名は小文字にする
Android Simulatorはとにかく遅い。共通部分の開発はiOS環境でやるのがよさそう

2 iOS/Android両対応プロジェクトの作成

1) cocos2d-xのスクリプトでプロジェクトを作成

$ cd tools/project-creator/
$ ./create_project.py -project Sample2 -package jp.ne.akbob -language cpp // パッケージ名は3項目であること
$ cd ../../projects/Sample2/
$ ls
Classes/  proj.blackberry/ proj.mac/
Resources/  proj.ios/  proj.marmalade/
proj.android/  proj.linux/  proj.win32/
$ rm -r proj.mac proj.marmalade proj.linux proj.win32 proj.blackberry

2) [iOS] proj.ios/xxxxx.xcodeprojを開き動作確認
3) [Android] 先のlibcocos2dxプロジェクトのあるワークスペースに proj.androidのプロジェクトを追加
$ cd proj.android/
$ vi build_native.sh
APPNAME="Sample2"   // この下に追記
NDK_ROOT=/cocos/android-ndk-r8e
$ vi jni/Application.mk   // 末尾に追記
APP_PLATFORM := android-8
$ ./build_native.sh

ビルド成功後Eclipseから実行すればOK
[エラーケース] android-14, 8 とバージョンが違うというエラーが出る→APP_PLATFORMの設定でOK