2014年7月8日火曜日

cocos2d-x v3.2 rc0のAndroidプロジェクトをEclipseで正しく(たぶん…)ビルドする

cocos2d-x v3.2 rc0がリリースされたので、v3.1.1から移行するために試しています。

v3.2系は先にalpha版が出ていましたが、僕はその辺すっとばしてきたので、その辺りはご留意してお読み下さい。

環境
  • Mac OS X 10.8.5
  • cocos2d-x v3.2 rc0
  • Android NDK r9d

まず、大きく変わったというか、人によっては色々影響ありそうなのが、コンパイラとスタンダードライブラリがgnu gccから、clang llvmに移行した点でしょうか。

これで知ってる人は知っている、知らない人は知らない、NDK r9dのgnustl系スタンダードライブラリのstd::regex(c++11)問題が解決すればいいのですが、まだ、試していません。
まずは、ビルドを通すところから。


新規プロジェクト作成

ダウンロードしたcocos2d-x v3.2 rc0を展開して、いつものようにsetup.pyを実行したら、早速、新規プロジェクトを作成します。

プロジェクトの作成は、cocosコマンドで行います。
適当なフォルダで、以下のコマンドを打ち込むと、test_3_2_rc0というフォルダが作成され、その中に大量にファイルが作られます。
$ cocos new test_3_2_rc0 -p com.example.test_3_2_rc0 -l cpp

EclipseにAndroidプロジェクトをインポートします。インポートで指定するフォルダは、例では test_3_2_rc0/proj.android になります。(詳しい操作方法は割愛)

プロジェクトのプロパティ設定

さて問題のプロジェクト・プロパティの設定です。

Android
デフォルトでGoogle APIsとかにチェックが入っていると思いますが、そのままでも問題ないですが、転送するデバイスを選ぶ時にワーニングマークが出るので、とりあえず自分で設定しているターゲット(Android 4.4.2)を指定しておきます。
android.png

C/C++ General > Paths and Symbols > Includes
c++スタンダードライブラリのヘッダが格納されているパスがgnustl系のままになっているので、clang llvm系に変更します。
include.png

Xcode使いからすると、この設定がコンパイラには影響がないという事に愕然としてしまうのですが、この設定はソースコードエディタで #include 文にカーソルを合わせてF3キーを押して、ヘッダファイルにジャンプする時などに使用されているようです。(僕も詳しくない)

C/C++ General > Paths and Symbols > Symbols
ANDROIDの定義を追加します。
Assembly、GNU C、GNU C++全てに設定しておくのが良いと思います。
symboles.png

因みにデフォルトで設定してある CC_TARGET_PLATFORMの定義は、CCPlatformConfig.hの中で一旦undefされるので、cocos2d.hをインクルードするソースファイルでは、プラットフォームの定義が消えてしまいます。(汗)

ANDROIDの定義がされてあると、CCPlatformConfig.h内でCC_TARGET_PLATFORMに、CC_PLATFORM_ANDROIDが設定される仕組みになってます。
まったく、ややこしいですね〜。

Java Build Path > Source
libcocos2dのjavaソースコードへのパスが間違っているので(!)、本当のパスに修正します。(笑)
本当のパスは、v3.2 rc0では以下になります。
プロジェクト/cocos2d/cocos/platform/android/java/src

libcocos2d.png

以上の設定をすれば、ビルド&実行が可能になるはずです。でも、まあ人によって設定が違うかと思いますので、めげずに頑張ってください!

Android開発の先輩諸氏のブログを拝見させていただきますと、こういうことはcocos2d-xでは日常茶飯事のようですね。無料で使わせて貰ってるので、大きな事は言えませんが、あんまりひどいと多くのユーザーが離れる原因ともなるので、もうちょっとなんとかなると良いなぁと思います。

関連記事

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...