undefined

bokuweb.me

cocos2d-JSで作成したアプリをAndroidエミュレータ/実機で実行する手順

環境

  • MacBook Air (11-inch, Mid 2011)
  • Mac OS X Yosemite 10.10.2

.keystoreファイルの作成

以下のコマンドにてkeystoreファイルを生成します。

keytool -genkey -v -keystore flava.keystore -alias flava -keyalg RSA -validity 10000

対話形式で入力していく。

キーストアのパスワードを入力してください:
新規パスワードを再入力してください:
姓名は何ですか。
  [Unknown]:  YOUR NAME
組織単位名は何ですか。
  [Unknown]:  None
組織名は何ですか。
  [Unknown]:  None
都市名または地域名は何ですか。
  [Unknown]:  CITY
都道府県名または州名は何ですか。
  [Unknown]:  PREF
この単位に該当する2文字の国コードは何ですか。
  [Unknown]:  jp
CN=Satoshi ueki, OU=None, O=None, L=Ina, ST=Nagano, C=jpでよろしいですか。
  [いいえ]:  はい

10,000日間有効な2,048ビットのRSAの鍵ペアと自己署名型証明書(SHA256withRSA)を生成しています
    ディレクトリ名: CN=YOUR NAME, OU=None, O=None, L=CITY, ST=PREF, C=jp
<flava>の鍵パスワードを入力してください
    (キーストアのパスワードと同じ場合はRETURNを押してください):

入力を終えたら*.keystoreが生成される。

Android NDKのインストール

以下よりバージョンr10cをダウンロード。

Android NDK | Android Developers

ダウンロード後、公式にも書いてありますが以下のように解凍。

chmod a+x android-ndk-r10c-darwin-x86_64.bin
./android-ndk-r10c-darwin-x86_64.bin

どうもNDKのバージョンは10じゃ問題があるっぽい。 9dをインストールする。 cocos2d-js v3.3の場合r10cが推奨。r10c以外の場合以下のメッセージがでる。

The NDK version is not r10c or above.
Your application may crash or freeze on Android L(5.0) when using BMFont and HttpClient.
For More information:
    https://github.com/cocos2d/cocos2d-x/issues/9114
    https://github.com/cocos2d/cocos2d-x/issues/9138
  • zshを使っているので.zshrcに記述。環境に合わせて変更してください。

echo "export NDK_ROOT=/example/android-ndk" >> ~/.zshrc

SDKのインストール

以下からAndroid Studioをダウンロード

Download Android Studio and SDK Tools | Android Developers

起動してインストールを行う。ひとまずは、ずんずん「次へ」「次へ」って進んでけばOKっぽい。 適宜必要なSDKをインストールする。 その後コマンドラインから使用するためのパスを通す。

echo "export ANDROID_SDK_ROOT=/Users/<user>/Library/Android/sdk/" >> ~/.zshrc

エミュレータで実行

AndroidStudioのメニューバーより「tool」->「Android」->「AVD Manager」を選択

f:id:bokuweb:20150328093543p:plain

f:id:bokuweb:20150328093552p:plain

AVD Managerが立ち上がるので「Create a virtual device」をクリック

f:id:bokuweb:20150328093740p:plain

デバイスを選択し「Next」をクリック

f:id:bokuweb:20150328093828p:plain

システムイメージを選択し「Next」をクリック。グレーアウトしてるのは未インストールのもの。SDK Managerからインストールが必要。

f:id:bokuweb:20150328093948p:plain

設定し「Finish」。デフォルトで問題なさそう。

f:id:bokuweb:20150328094132p:plain

作成したエミュレータ一覧が表示される。

f:id:bokuweb:20150328094208p:plain

ダブルクリックでエミュレータが起動します。環境によってはすごく時間かかります。起動に数分かかったのでフリーズしてるのかと思いました。

・起動中。しばらくこの状態が続きます。
f:id:bokuweb:20150328094517p:plain

・起動完了。
f:id:bokuweb:20150328094721p:plain

起動後以下のコマンドを実行するとエミュレータ上でアプリが実行されます。

cocos run -p android  

リリースビルド

cocos compile -p android -m release

でandroid用にコンパイル。 projectname/publish/androidにprojectname.apkが生成されます。 実機に転送後クリックすることで実機でアプリを実行することができます。

エラー集

NDKバージョン

Running command: compile
Can't know cpuinfo, use default 1 cpu
Building mode: release
Android platform not specified, searching a default one...
Can't find right android-platform for project : "/Users/<user>/flava_cocos/frameworks/runtime-src/proj.android". The android-platform should be equal/larger than 10

上記に書いたようにcocos2d-JS v3.3の場合NDKは9d10cが推奨らしい。9cを使用していたためコンパイルできなかった。

keyエラー

『Cannot recover key』となる場合。 frameworks->runtime-src->proj.android->ant.properties内のパスとの齟齬がある。