忍者ブログ
  • 2024.10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.12
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/11/22 19:39 】 |
AndroidStudioでcocos2d-xのプロジェクトを動かした話
iOS版はすでに動いている

cocos2d-x バージョン3.7
AndroidStudio バージョン1.3 (作業中に1.5.1にアップデート)

AndroidStudioに対応したcocos2d-xのバージョンだと、プロジェクトのディレクトリに
proj.android-studio/
が作られている。



まずはAndroidStudioを開いてみる

ディレクトリは前述の場所を選択。

すると以下のエラーが出た


どうやらJDKの指定が悪い様子。

JDKのパスを確認する方法は

を選択。

すると以下のような画面になる


下部にエラー内容が書いてある。
"Please choose a valid JDK directory."

つまり、以下のパスを修正しろということだ
/System/Library/Java/JavaVirtualMachine/1.6.0.jdk/Contents/Home

このパスが間違っているわけではないはずなのだが(Eclipseの時はこれで動いていたので)
変えた方が良さそうだ。

ひとまずjdkの最新をダウンロードしてみる。

ダウンロードページ



ダウンロードされた場所は以下。
/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home

このパスを指定すると、エラーが消えた。


ついでに、Android SDK のパスも変更。
adt-bundle-mac-x86_64-20140321
になっているが、昔のeclipseのダウンロードした時のままなのであまりふさわしくない
(中にAPI level別のディレクトリが入っているし)


変更。
この場合、
~/.bash_profile
の中身の
ANDROID_SDK_ROOT
を書き換え、
$ source ~/.bash_profile
を実行する。

また、ポップアップに従って、AndroidStudioをアップデートした。



次に、
Android.mkの指定をする必要がある。

LOCAL_SRC_FILESの部分は変更が必須。
Classesディレクトリ以下のすべての.cppと.hを正しくビルドに含めるために、以下のように記述。

CPP_FILES := $(shell find $(LOCAL_PATH)/../../../Classes -name *.cpp)
LOCAL_SRC_FILES := hellocpp/main.cpp
LOCAL_SRC_FILES += $(CPP_FILES:$(LOCAL_PATH)/%=%)






また、AndroidStudioからディレクトリ階層が一つ深くなっているので、そこも変更
なおこのコマンドが実行される時のカレントディレクトリ(Android.mkのある場所)は
proj.android-studio/app/jni/
である。


これでビルドしてみる。


cocos compile -s path/to/project -p android --android-studio --debug






コンパイルして実行もする場合は以下のように

cocos run -p android --android-studio



ANDROID PLATFORM(android SDK バージョン)を、AndroidStudioで使用しているのと違うものを指定したい場合は、ap オプションで指定できる

cocos run -p android --ap 20







が、エラーが結構出る。

特に困るのが、stringクラスが使えないこと。

error: 'to_string' is not a member of 'std'
みたいな。

NDKのSTLに含まれていないらしい。なんと不便な
to_stringだけなら自前実装もできるが、stolとか軒並み駄目なので、なんとかしたい。

Application.mkの先頭行を

APP_STL := gnustl_static





から

APP_STL := c++_static





に書き換えると、できるようになる。
参考ページ
指定できるライブラリ一覧


ライブラリを追加する方法は

で選択。
決定すると、自動でダウンロード、ビルドされる。



また、build.gradleにも自動で書き込まれている。




しかし、これもエラーが。
No resource found the matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'

原因は、APIレベルがあっていないことらしい

以下の対応をしたら直った
・Project Structureウィザードで、プロジェクトのBuildToolVersionを23.0以上にする
・build.gradleに以下を記述
compile 'com.android.support:support-v4:23.1.1'

参考




これらを対応してようやっとビルドに成功。

しかしまだ気になるワーニングがある


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

Your application may crash when using c++ 11 regular expression with NDK_TOOLCHAIN_VERSION 4.8




Project Structureを見ると、ご丁寧にNDKのダウンロードができるようになっている。
クリックして、ダウンロードする(10分ほどかかる)

すると、自動的にディレクトリがセットされる
(ダウンロードディレクトリは、ANDROID_SDK_ROOT/ndk-bundle になる)

このディレクトリをbash_profileのNDK_ROOTに書き、
$ source ~/.bash_profile
を実行すれば、ワーニングは消えた


PR
【2016/02/20 19:03 】 | Android | 有り難いご意見(0)
<<Android.mkの解読 | ホーム | 無題>>
有り難いご意見
貴重なご意見の投稿














<<前ページ | ホーム | 次ページ>>