Cocos2d-x 3.7 より、Android Studioに対応しました。

また、Android Studioも永くNDKに対応されなかったのが、1.3になってようやく対応されました。

個人的にeclipseに対してあまりいい思い出がないので、これは朗報です。

早速セットアップして試行錯誤し、ビルド実行を確認できたので記事にします。

(この記事を書いている間に、良いチュートリアル動画を見つけましたので、そちらも見てみるとよいでしょう)
https://youtu.be/gdOkbXYsf04

なお、この記事はWindowsで環境構築していますが、Macでもほぼ同じように構築できると思います。

 

準備したもの

  • Android Studio 1.3.1
  • JDK 1.7 (Java SE Development Kit 7)
  • Android SDK
  • Android NDK
  • Cocos2d-x 3.7

 

Android Studioのダウンロードとセットアップ

https://developer.android.com/sdk/index.html

AS_01

WindowsですでにAndroid SDKを持っている場合は、ページ下部にあるIDE版でもよい。

AS_02

JDKがインストールされていない場合はJDKのパスを促されるので、ダイアログにあるリンクからダウンロードし、先にJDKをインストールする。

AS_03

AS_04

JDKをインストール後、もう一度Android Studioのセットアップを起動すれば聞かれない。

AS_05

Android StudioとAndroid SDKのインストールパスを指定し、インストール。
(すでにインストール済みの場合は、既存のAndroid SDKのパスを指定)

AS_06

インストールが完了し、初めてAndroid Studioを起動すると、以下の様なダイアログが現れる。

初めての場合は設定ファイルを持っていないので、設定ファイルをインポートしないにチェックしてOK。UIテーマはお好みで。

AS_07

Android NDKが未インストールならば、インストールする。

以下のURLからダウンロードしてフォルダに解凍するか、SDK Managerでダウンロードする方法がある。
https://developer.android.com/ndk/downloads/index.html

SDK Managerを使用してNDKをセットアップする場合

Welcome to Android Studio の画面で [Configure]-[Settings]
Appearance & Behaviore – System Settings – Android SDK

AS_08

SDK Tools タブを開き、Android NDKを選択。
ついでに、他のものも選択しておくことをおすすめする。

AS_15

OKするとダウンロード、インストールされる。
なお、NDKはAndroid SDKのパスの中のndk-bundleフォルダにインストールされるので、今後NDKのパスを求められる場合は、この場所を指定すること。

(例)
C:\Android\android-sdk\ndk-bundle

cocosのセットアップ

cocos2d-xを初めてセットアップする場合は、前のブログ記事のcocos2d-xセットアップを参考にセットアップする。

(例)
C:\cocos2d-x\cocos2d-x-3.7\setup.py

setup.py 実行時、パスの設定で Android SDK、Android NDKの指定は必要だが、ANTはEnterでスキップしてOK。

(例)
NDK_ROOT : C:\Android\android-sdk\ndk-bundle
ANDROID_SDK_ROOT : C:\Android\android-sdk
ANT_ROOT : (Enterでスキップ)

cocos2d-x 3.7で cocos new を使ってプロジェクトを作成すると、proj.android-studioフォルダができているので、確認する。

(例)
cocos new SampleGame -p net.cretia.SampleGame -l cpp -d D:\Cocos2d-x-Projects

AS_09

 

Android Studioを起動する

Open an existing Android Studio project
を選択し、プロジェクトの proj.android-studio を選択する。

AS_10

プロジェクトを開き、左側のProjectのタブを選択すると、
SampleGame, libcocos2dx
の二つが登録されていることが確認できる。(libcocos2dxはしばらく待っていると出てくる)

AS_11

また、赤枠のタブをProjectに選択すると、プロジェクトの中身や、gradleと呼ばれるビルド設定を確認することができる。
このsettings.gradleの内容が、プロジェクトの登録情報になっている。

AS_12

しばらく待っているとgradle buildが完了し、赤枠部分が有効となり、ビルド実行できるようになる。

AS_13

 

エミュレータで確認する場合はAVDの設定を行う。
AVDの設定は arm 系にすること。

AS_18

ちなみに、この状態でAndroid Studio上でbuildしても、以下のようなエラーが出てきてしまう。

java.lang.UnsatisfiedLinkError: Couldn’t load cocos2dcpp from loader dalvik.system.PathClassLoader

現行バージョンでは、Android Studioだけでは完結せず、ビルドはコマンドで行う必要がある。

以下のようにコマンドプロンプトを開き、cocos コマンドでビルドを行う。(コンパイルだけでよい場合は、cocos run のかわりに cocos compile を使えばよい)

cocos run -s D:¥Cocos2d-x-Projects¥SampleGame -p android --android-studio

buildに必要なgradle関連ファイルもダウンロードされ、ビルドが進んでいく。

それでもエラーが出るとき

端末にアプリがインストールされた後、アプリがクラッシュしてしまい、Logcatに以下のエラーが出る場合がある。

java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol “srand” referenced by “libcocos2dcpp.so”…

このエラーが出た時、以下のことを試してみたら動いた。


1.
proj.android-studio/app/jni/Application.mk
に、以下の行を追加する。

(android-○の部分は、build.gradleのminSdkVersionに合わせた)

2.
最初のビルドによって出来上がったファイルを削除する為、以下のフォルダを削除する
proj.android-studio/app/build
proj.android-studio/app/obj
proj.android-studio/app/libs/armeabi
プロジェクトフォルダ/cocos2d/cocos/platform/android/libcocos2dx/build

3.
cocos run を実行する

これでもダメな場合は、Android NDKを r10系ではなく、r9dにするとうまくいくという情報があるので、差し替えに問題なければそれを試してみる。

Win(32bit) : https://dl.google.com/android/ndk/android-ndk-r9d-windows-x86.zip
Win(64bit) : https://dl.google.com/android/ndk/android-ndk-r9d-windows-x86_64.zip
Mac(64bit) : http://dl.google.com/android/ndk/android-ndk-r9d-darwin-x86_64.tar.bz2

 


うまくいけば、実機やAVDでアプリが起動できるはず。

AS_16

このまま、Android Studioでもう一度ビルドすると、こちらからでもアプリのインストール、起動ができることを確認することができた。

以降は、ソースが変わらない限りは、cocosコマンドだけでなくAndroid Studio上でもビルド実行が可能となる。

(アプリのタイトルはデフォルトでlibcocos2dx、表示名がHellocppとなる)

 

タイトルを変える方法

(2015/10/07 修正)

app/res/values/strings.xml のファイルを開き、app_nameの値をHellocppから変更する。

本体の名前は

libcocos2dx側のAndroidManifest.xml

のように、android:labelを削除する。

そして、app側のAndroidManifest.xmlで、

上記のように、application タグ内に android:label=”@string/app_name” を追記する。

これで、アイコンの下に出てくるタイトルと、アプリ情報でのアプリ名が変更される。

 

Classes内のソースの修正、ビルド

Android Studio上では、gradleの設定、jni/Android.mkへのcppファイル登録、広告SDKなどの他のプロジェクトの追加や、AppActivityの修正等が行え、ビルドも反映される。

しかし、Classes内ソースのビルドは現行バージョンでは行えない。

別のIDE(Visual Studio, XCode等)を使って修正するか、Android Studioで以下のようにプロジェクトを新規ウィンドウで開き、ソースを修正すると良い。

[File]-[Open…]

AS_17

プロジェクトを選択

AS_17_2

New Windowを選択(新しいウィンドウで開く)

AS_17_3

タブを Project にすると、プロジェクトの階層が見られるようになり、ソースも修正が行える。

AS_17_4

 

いずれにしても、cppを修正したら cocos コマンドによるビルドは必要となる。