cocosIDEを触ってみたパート2

suzuki(プログラマー)
まだまだ未熟者ですがよろしくお願いします!

cocoIDEを触ってみたその後

こんにちは前回cocosIDEを触ったときにOne Click Publishingの機能が何度試してもNdk build failed! となってしまうと嘆いていた鈴木です。

今回は自分がハマったところと対処法を書いていこうと思います。
(試したのはAndroidのみなのでiPhoneはまた別の機会に)
自分の環境としては
AndroidSDK:r23.0.2
AndroidNDK:r9d
ANT :1.9.4
を使用しました。
NDKは最新を使ってしまうと必ずfaildになってしまうそうです。
過去のNDKをダウンロードする方法はこちらを参考にしてください。

原因その1

何も考えずにPackage to APKボタンをクリック。
何も考えずにボタンクリック1
何も考えずにGenerateボタンをクリック。
何も考えずにボタンクリック2
すると出てくる下の文とBuild faildの文字……。
そりゃそうだ

1
The android-platform of project "/Users/suzukikenta/Documents/cocos/Test/frameworks/runtime-src/proj.android" should be equal/larger than 21, but 10 is specified.

これはつまりGenerateの所のSDKのバージョンを10ではなく21とすればいいのかな?

原因その2

21を選択してGenerateボタンをクリック!
SDKのバージョンを変えよう
なんだかガシガシ動いてくれてる!
もしかしてこのままで行けるのかな……!?
こんな簡単な事だったら前の時に解決してるよな〜。
どうせ今回もだめなんだろうな〜と思ってました。
結果はやっぱりだめでした。
さてとログを見ていこうかな。

1
2
3
4
/Users/suzukikenta/Documents/cocos/Test/frameworks/runtime-src/proj.android/../../js-bindings/cocos2d-x/external/curl/prebuilt/android/armeabi/libcurl.a(url.o):function IsPipeliningPossible: error: relocation overflow in R_ARM_THM_CALL
/Users/suzukikenta/Documents/cocos/Test/frameworks/runtime-src/proj.android/../../js-bindings/cocos2d-x/external/curl/prebuilt/android/armeabi/libcurl.a(url.o):function fix_hostname.isra.1: error: relocation overflow in R_ARM_THM_CALL
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [obj/local/armeabi/libcocos2djs.so] Error 1

ここが怪しいような気がする。(解決する前はそんなこと全く思わなかったくせに)
とりあえず

1
make: *** [obj/local/armeabi/libcocos2djs.so] Error 1  

でググってみました。エラーって出てるし短いしという理由。
一番上のページから見ていきます。
おっ、初っ端から同じ症状のページにヒットした! ってこれ公式のコミュニティだ。
ちゃんと公式はチェックしましょうということですね。

どうやらfaildになった原因は

1
2
/Users/suzukikenta/Documents/cocos/Test/frameworks/runtime-src/proj.android/../../js-bindings/cocos2d-x/external/curl/prebuilt/android/armeabi/libcurl.a(url.o):function IsPipeliningPossible: error: relocation overflow in R_ARM_THM_CALL
/Users/suzukikenta/Documents/cocos/Test/frameworks/runtime-src/proj.android/../../js-bindings/cocos2d-x/external/curl/prebuilt/android/armeabi/libcurl.a(url.o):function fix_hostname.isra.1: error: relocation overflow in R_ARM_THM_CALL

ここのようですね。
これのエラーを回避するためには

1
2
3
4
5
Add
LOCAL_ARM_MODE := arm
to files
/runtime-scr/proj.android/jni/Android.mk
/js-bindings/bindings/Android.mk

をしてあげればよいとのことです。
指定通りに二つのAndroid.mkファイルを修正しました。
さてまたPackage to APKをしてみます。
SDKのバージョンを21にしてGenerateボタンをクリック!
またガシガシ動いてくれている!
これはいい予感がする!
いけました!

APKできた!

これにてAndroidのAPK化についてはこれで終わりにします。
次はiPhoneの方をやったりGitとの連携とかやっていけたらいいなと思っています。
何となくcocosIDEとうまくやっていけそうな気がしてきました。
みなさんもcocosIDEを触って情報を発信して頂けると助かります。