LoginSignup
21
21

More than 5 years have passed since last update.

Mavericksでcocos2d-x 3.0.0finalをAndroid実機で動かすまでのあれこれ

Last updated at Posted at 2014-05-31

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への対応

..ので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対応ははやめにするのが吉というのを思い知った

21
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
21