読者です 読者をやめる 読者になる 読者になる

きょこみのーと

元六本木でGo書いてました。今はVRでGo書いてます。

Cocos2d-x3.0rc0からCocos2d-x3.0rc1への移行メモ

いつものやつです。Androidの変更でちょっとハマった。。。

いつものnew Projectとのdiff

いつもどおりiOSAndroid以外はスルー

proj.android

rc0のCocos2dxActivityがrc1ではAppActivity.javaに変わった。

diff -r ./proj.android/AndroidManifest.xml /Users/kyokomi/git/MyCppGame/proj.android/AndroidManifest.xml
14c14
<         <activity android:name="org.cocos2dx.cpp.Cocos2dxActivity"
---
>         <activity android:name="org.cocos2dx.cpp.AppActivity"

Only in /Users/kyokomi/git/MyCppGame/proj.android/src/org/cocos2dx/cpp: AppActivity.java
Only in ./proj.android/src/org/cocos2dx/cpp: Cocos2dxActivity.java

$ diff main.cpp ~/git/cocos2droguelike/proj.android/jni/roguelike/main.cpp
13c13
< void cocos_android_app_init (JNIEnv* env, jobject thiz) {
---
> void cocos_android_app_init (struct android_app* app) {

proj.ios_mac

diff -r ./proj.ios_mac/ios/main.m /Users/kyokomi/git/MyCppGame/proj.ios_mac/ios/main.m
3,5d2
< // Under iOS and the Simulator, we can use an alternate Accelerometer interface
< #import "AccelerometerSimulation.h"
<

そんなに移行としては修正する箇所はなかった。とりあえず移行はスムーズにできた。

Deprecatedになったクラスの修正

LabelTTFDeprecatedになってLabelを使うのが推奨になったみたいです。

どうやらSpriteBatchNodeを使うように改善したみたい。

すごい手抜きなコードで、LabelTTFLayerをaddChildしてるところがあって、Labelに置換したらBAD_ACCESSで落ちました。

確かにSpriteBatchNodeで使いまわしてるのでaddChildとかダメですよね(T_T)

下地にするLayerをcreateして、その上にLabelLayerをaddChildすればOKすね。

Android起動でコケる現象が起きました

すでに「いつものnew Projectとのdiff」の内容に記載ずみですが、main.cppを直し忘れて起動時に以下のエラーが出てこけてました。((((;゚Д゚))))ガクガクブルブル

お気をつけください。

W/ActivityManager(  756):   Force finishing activity com.kyokomi.cocos2d.roguelike/org.cocos2dx.cpp.AppActivity
W/InputDispatcher(  756): channel '43bbb670 com.kyokomi.cocos2d.roguelike/org.cocos2dx.cpp.AppActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
E/InputDispatcher(  756): channel '43bbb670 com.kyokomi.cocos2d.roguelike/org.cocos2dx.cpp.AppActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
W/InputDispatcher(  756): Attempted to unregister already unregistered input channel '43bbb670 com.kyokomi.cocos2d.roguelike/org.cocos2dx.cpp.AppActivity (server)'
I/WindowState(  756): WIN DEATH: Window{43bbb670 u0 com.kyokomi.cocos2d.roguelike/org.cocos2dx.cpp.AppActivity}
I/WindowState(  756): WIN DEATH: Window{43bbb928 u0 SurfaceView}
D/Zygote  (  184): Process 19043 terminated by signal (11)
D/dalvikvm(  756): GC_FOR_ALLOC freed 2028K, 15% free 50166K/58716K, paused 74ms, total 74ms
W/ActivityManager(  756): Exception thrown during pause
W/ActivityManager(  756): android.os.DeadObjectException
W/ActivityManager(  756):  at android.os.BinderProxy.transact(Native Method)

感想

今回のバージョンはWP8対応がメインなのかな。

あとはAndroidのmainで呼び出すactivityがAppActivityになった点(NativeActivity.cppが廃止になった)ですねー(^_^;)

これでCocos2d-x2.x系でAndroid側をゴリゴリいじったやつも少しは、移行しやすくなるかな・・・