iOS+XCodeはすぐ動くがAndroidがクセモノだったのでメモ。
eclipseは使わずコマンドラインで行う場合。
インストール
まず以下をインストールしてパスを通す
Android SDK http://developer.android.com/sdk/
Android NDK https://developer.android.com/tools/sdk/ndk/
apache ant http://ant.apache.org/bindownload.cgi
cocos2d-x 3.0.0 http://www.cocos2d-x.org/download
ここに書いてある
http://www.cocos2d-x.org/wiki/How_to_run_cpp-tests_on_Android
setup
cd cocos2d-x-3.0
./setup.py
ここで各々にパスが通っているか~./.profileを確認
(※サイトのドキュメントは.bash_profileになっているが、出力通りの操作だと.profileにはいる)
# Add environment variable COCOS_CONSOLE_ROOT for cocos2d-x
export COCOS_CONSOLE_ROOT=/Users/keidroid/cocos2d-x-3.0/tools/cocos2d-console/bin
export PATH=$COCOS_CONSOLE_ROOT:$PATH
# Add environment variable NDK_ROOT for cocos2d-x
export NDK_ROOT=/Users/keidroid/android-ndk-r9d
export PATH=$NDK_ROOT:$PATH
# Add environment variable ANT_ROOT for cocos2d-x
export PATH=/Users/keidroid/android-sdks/tools:$PATH
export ANDROID_HOME=/Users/keidroid/android-sdks
export ANT_ROOT=/Users/kei/apache-ant-1.9.4/bin
export PATH=$ANT_ROOT:$PATH
# Add environment variable ANDROID_SDK_ROOT for cocos2d-x
export ANDROID_SDK_ROOT=/Users/kei/android-sdks
export PATH=$ANDROID_SDK_ROOT:$PATH
export PATH=$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools:$PATH
プロジェクト作成
cocosコマンドでnewする
cocos new {プロジェクト名} -p {パッケージ} -l {言語} -d {ディレクトリ}
cd cocos2d-x-3.0/project
cocos new Hello -p net.keidroid.hello -l cpp -d .
ビルド/実行
cd proj.android
./build_native.py
ant debug install
↓こちでも良いけど
cocos run -p android
んで、多分以下の様なエラー出るので
{path}/proj.android/build.xml:46: sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var
local.propertiesを確認したり、update projectしたり
android update project -p . -t 1
android update project -p ../cocos2d/cocos/2d/platform/android/java -t 1
ファイル追加
HelloWorld確認した後、ファイルを追加するとエラーになる。
Android.mkがsrcファイルを以下のように指定してるせい
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorldScene.cpp
なので、
Classes内にディレクトリを作って整理する Android.mkの自動化
http://ichiokumanyen.hatenablog.jp/entry/2013/10/05/220232
を参考に以下のように変更
CPP_FILES := $(shell find $(LOCAL_PATH)/../../Classes -name *.cpp)
LOCAL_SRC_FILES := hellocpp/main.cpp
LOCAL_SRC_FILES += $(CPP_FILES:$(LOCAL_PATH)/%=%)
LOCAL_C_INCLUDES := $(shell find $(LOCAL_PATH)/../../Classes -type d)
cocos2d extension に対応
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
$(call import-module,extensions)
Android UXへの対応
- Menu Button of Shameを削除したい (http://youtu.be/x_gxZd9kLv4?t=3m2s)
- (ゲームによっては画面縦にしたい)
..のでAndroidManifest.xmlを編集
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.keidroid.hello"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="15" /> ////こことか
<uses-feature android:glEsVersion="0x00020000" />
<application android:label="@string/app_name"
android:icon="@drawable/icon">
<activity android:name="org.cocos2dx.cpp.AppActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" ////こことか
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:configChanges="orientation">
(以下略)
..(´∀`)
でやっと実機で思い通りの動作が可能になりました。
感想
cocos2d-xでの開発時、iOSで走って最後にAndroid対応しようとすると、
XCodeが便利すぎてつまる..
include指定もXCodeのグループしていではなくフォルダ指定になったり。
Android対応ははやめにするのが吉というのを思い知った