cocos2d-x3.0alpha0のprojectを3.0alpha1に移行してみる
はじめに
最近、cocos2d-xのアプリ増えてきましたねー。cocos2d-xのバージョンアップも早い早い。
ということで今回は、以前cocos2d-x3.0alpha0で作り始めたアプリをcocos2d-x3.0alpha1に移行してみます。
cocos2dxのパスが変わった対応
Android.mkのimportとかを修正
基本的に新しいバージョンでcreate_project.pyして作ったものと旧バージョンを比較して修正する感じ。
めんどくさい時はClassesだけ移植して再構築する。(2.2.0 -> 3.0alpha0preに移行するときはそうした)
cocos2dx/project/MyProject/jni/Android.mk
$ git diff proj.android/jni/Android.mk diff --git a/proj.android/jni/Android.mk b/proj.android/jni/Android.mk index 29212f3..5c12195 100644 --- a/proj.android/jni/Android.mk +++ b/proj.android/jni/Android.mk @@ -15,17 +15,20 @@ LOCAL_SRC_FILES := hellocpp/main.cpp \ LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes -LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static +LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static -LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static -LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dxandroid_static + include $(BUILD_SHARED_LIBRARY) -$(call import-module,cocos2dx) -$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl) -$(call import-module,CocosDenshion/android) -$(call import-module,extensions) -$(call import-module,external/Box2D) -$(call import-module,cocos2dx/platform/android) +$(call import-module,2d) +$(call import-module,audio/android) +$(call import-module,Box2D)
なんかこのmakefileだいぶすっきりしたね。
build_native.shは完全に別人
cocos2dx/project/MyProject/proj.android/build_native.sh
まったくいじってないけど、3.0alpha0と3.0alpha1で全く別物で、差分とるのめんどいので最新のやつで上書きかなーと思ったら・・・
「build_native.py」になってる!? ( ゚д゚)ポカーン。
Pythonに变化するとか、スピリチュアルすぎるやん( ^ω^)
ぶっちゃけPython初心者だけど、まあ何やってるかなんとなくわかった(気がする)
相変わらず「../../../」な相対パスでcocos2dxのplatformをお探ししてbuildしてresourceファイルをassetsにコピーしたりセコセコやってるかな。
と思って実行した後に以下にcocos2dx側からプロジェクトをbuildするやつが追加されてたことに気がついた。 そういえば、cocos2d-x公式のNewsでちょろっと見たことある気がする。
172行目くらいの def build_samplesメソッドのelifに対象のプロジェクトを追加
cocos2d-x/build/android-build.py
elif target == 'MyProject': app_android_root = os.path.join(cocos_root, 'projects/MyProject/proj.android')
実行してみる。以下コマンドと実行ログ。
$ ./android-build.py MyProject The Selected NDK toolchain version was 4.8 ! Android NDK: WARNING: APP_PLATFORM android-18 is larger than android:minSdkVersion 10 in ./AndroidManifest.xml Android NDK: WARNING:/Applications/cocos2d-x/build/../cocos/2d/Android.mk:cocos2dx_static: LOCAL_LDLIBS is always ignored for static libraries Android NDK: WARNING:/Applications/cocos2d-x/build/../cocos/2d/platform/android/Android.mk:cocos2dxandroid_static: LOCAL_LDLIBS is always ignored for static libraries make: Entering directory `/Applications/cocos2d-x/projects/MyProject/proj.android' Install : libcocos2dcpp.so => libs/armeabi/libcocos2dcpp.so make: Leaving directory `/Applications/cocos2d-x/projects/MyProject/proj.android'
わーいわーい、これでcocos2xのビルドnativeビルドが完了。
ちゃんと「libcocos2dcpp.so」が作成されてるよ素敵!! つ、ついに相対パスの呪縛が!!感動やで。。。
apkを作成して実機にinstallする
android updateするよー local.propertiesとかいるからね
$ cd /Applications/cocos2dx/project/MyProject/proj.android/ $ android update project -p ./ MyProject
antでデバッグインストール実行!!
eclipseさんを起動しないでapkのインストールまで完了( ー`дー´)キリッ。
$ ant debug install
まとめ
- cocos2dx/cocos2dx/のパスがcocos/2d/になってた(3dも近くにいる気がするドキドキ)
- build_native.shがPythonに進化した。テテーン
- projectより上位の階層から複数プロジェクトまとめてbuildする環境が用意された(cocos2dx/build/android-build.py)
今度は、最近個人的にブームなgradleでビルドしてみよう。