cover_small

AndroidエミュレータでCocos2d-JSゲームを作動及びログ監視の実装

目標

EclipseAndroid Studioなど重いIDEを使わずにcocos2d-jsゲームをコンパイラしAndroidエミュレータでデバッグ(ログ監視)する(導入手順最簡略化)。

環境

  • cocos2d-js v3.10
  • Mac OS X
  • android-ndk-r9d
  • Android 4.4.2 (API 19)

関連プロジェクトはこちらへ.

インストール

jdk

.javaファイルをコンパイラする。リンク先

Android-SDK

署名をつける、.apkを作成など。リンク先

Android-NDK

c++をコンパイラする、.so .aを作成など。リンク先

cocosコマンドラインツールに合わせてandroid-ndk-r9dを使用。

環境配置

Android-SDKAndroid-NDK をインストールした後,.bash_profileを修正する必要があります:

# NDK
export NDK_ROOT=/Users/android/android-ndk-r9d
export PATH=$PATH:$ANDROID_NDK_ROOT

# SDK
export ANDROID_SDK_ROOT=/Users/android/android-sdk-macosx
export PATH=$PATH:$ANDROID_SDK_ROOT

export PATH=$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools:$PATH
export PATH=$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/build-tools/23.0.3:$PATH

修正した後は: source ~/.bash_profile

仮想デバイス設置

SDK && Image

まずは必要なSDKをダウンロードする。

android-sdk-macosx/tools ではいろんなコマンドラインツールがあります、EclipseとかIDEもそれを利用しています。

例えば:

root: android

これでAndroid-SDK-Managerというビジュアルツールが作動します。これで必要なモジュールを選択しインストールすることができます。

ここでインストールされたのはご覧の通り:

+ Tools
    - Android SDK Tools
    - Android SDK Platform-tools
    - Android SDK Build-tools
+ Android 4.4.2 (API 19)
    - SDK Platform
    - Google APIs Intel x86 Atom System Image
+ Extras
    - Intel x86 Emulator Accelerator (HAXM Installer)
  • cocos2d-jsのコマンドラインツールcocosで作成したAndroidプロジェクトを合わせるためにAndroid 4.4.2 (API 19)を選択した

  • Google APIs Intel x86 Atom System Image は仮想デバイスのイメージファイルで、Intel x86 Emulator Acceleratorと一緒に使うとエミュレータを高速にすることができます。

android_sdk_manager

AVDの作成及び作動

ImageがあればADV(Android Virtual Device)を作成することができます:

root: android avd

これでAndroid-Vitural-Device-Managerというビジュアルツールが作動します:

avd

ここで先ダウンロードしたImageを指定しAVDを作成します。

一つのAVDにはImage + SDK + Device + Skin より完成する。

avd_create_new

作成したAVDは次のコマンドで作動できる:

root: emulator avd "AVD名"

avd_emulator

.apk作成

cocos2d-js から提供した cocos という便利なコマンドツールで簡単に .apkを作成する
ことができますがその前に少しだけファイルの修正の必要があります。

ファイルの修正

cocos コマンドより作成したAndroidプロジェクトはproj.androidと言います。

フォルダー構成(CocosProtobufを例に):

+ CocosProtobuf
    + frameworks
        + runtime-src
            + Classes
            + proj.android

まずは jni/Android.mkの修正 :

LOCAL_SRC_FILES := hellojavascript/main.cpp \
                   ../../Classes/AppDelegate.cpp 

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes

本来のやり方はコンパイラするソースファイルを全て記入しなければならないのですがここで簡単なやり方あります:

MY_FILES_PATH :=  $(LOCAL_PATH)
MY_FILES_PATH +=  $(LOCAL_PATH)/../../Classes
                   
MY_FILES_SUFFIX := %.cpp %.c %.cc

rwildcard = $(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2))

MY_ALL_FILES := $(foreach src_path,$(MY_FILES_PATH), $(call rwildcard,$(src_path),*.*) ) 
MY_ALL_FILES := $(MY_ALL_FILES:$(MY_CPP_PATH)/./%=$(MY_CPP_PATH)%)
MY_SRC_LIST  := $(filter $(MY_FILES_SUFFIX),$(MY_ALL_FILES)) 
MY_SRC_LIST  := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)

define uniq =
    $(eval seen :=)
    $(foreach _,$1,$(if $(filter $_,${seen}),,$(eval seen += $_)))
    ${seen}
endef
MY_ALL_DIRS := $(dir $(foreach src_path,$(MY_FILES_PATH), $(call rwildcard,$(src_path),*/)))
MY_ALL_DIRS := $(call uniq,$(MY_ALL_DIRS))

LOCAL_SRC_FILES  := $(MY_SRC_LIST)
LOCAL_C_INCLUDES := $(MY_ALL_DIRS)

これでプロジェクトにある全ての cpp .c .cc がコンパイラされます。

次は Application.mkの修正

 
# APP_ABI := armeabi-v7a

コメントアウトされた行を戻してAPP_ABIをエミュレータ用のx86に変更:

APP_ABI := x86

これでcocos.apkを作成できる:

cocos compile -p android

.apkの作動及びログ監視

作動

作成した .apkproj.android/bin あるいは CocosProtobuf/simulator/android で格納されています。

そしてまずはAVDを作動し:

root: emulator avd "XXX"

次のコマンドでインストールする:

root: adb install CocosProtobuf-debug.apk

これで作動したエミュレータでapkのアイコンが出てきます。

ログ監視

ログ監視もandroid-sdk-macosx/toolsでのコマンドツールだけで実現できます:

root: monitor

これよりEclipse のようなビジュアルログ監視ツールを作動できます。

log_monitor

これでフィルターを使ってゲームのログを監視することができます。

log_monitor_filter

log_monitor_filter_result