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

cocos2d-x-3.0rc1メモ


自メモ)


x-pluginをリンクするとAndroidでSEGVするみたいなのでちょっと保留
x-plugin自体はメンテかかってないんだよねー。
でも
cocos2d-htmlのAndroid出力では
x-plugin使うはずなのでそのうち治ってくると信じたい

http://twitter.com/mk18/status/451577670778617856:twitter:detail:right
http://twitter.com/mk18/status/451577670778617856:twitter:detail:right
http://twitter.com/splhack/status/451578036840701952:twitter:detail:right

でもここらへんの話ってさー

の話であるわけですけど、これは以前のGoogle Analytics と同じ話で
起動時に初期化*1 or 設定だけできればいい って感じなんですよね。。

C++からいじる形でスマートにするには

  • x-pluginでやりましょう

という構想なわけだったと思うし。まあドキュメントレスだから*2使わなかったのが敗因だと思われ、、、
操作するためにIF文で書くのも微妙な気がするけどどうなんだろう??


  • Apllication.mk
#APP_ABI := armeabi armeabi-v7a
APP_ABI := all

に変更。x-pluginのprotocolのビルドは正常終了してる状態。。。

同じコードでrc0は動くわけだしな。。。



追加検証1>な話を見て

一応

のところを観点に見直してると


[armeabi-v7a] Compile thumb : chipmunk_static <= cpArbiter.c
In file included from jni/../../cocos2d/cocos/audio/android/../../2d/cocos2d.h:96:0,
from jni/../../cocos2d/cocos/audio/android/ccdandroidUtils.cpp:26:
jni/../../cocos2d/cocos/audio/android/../../2d/CCLabelTTF.h:77:77: warning: 'LabelTTF' is deprecated (declared at jni/../../cocos2d/cocos/audio/android/../../2d/CCLabelTTF.h:59) [-Wdeprecated-declarations]
TextVAlignment vAlignment = TextVAlignment::TOP);
^
jni/../../cocos2d/cocos/audio/android/../../2d/CCLabelTTF.h:81:105: warning: 'LabelTTF' is deprecated (declared at jni/../../cocos2d/cocos/audio/android/../../2d/CCLabelTTF.h:59) [-Wdeprecated-declarations]
static LabelTTF * createWithFontDefinition(const std::string& string, FontDefinition &textDefinition);
[armeabi-v7a] Compile thumb : chipmunk_static <= cpArray.c
^
jni/../../cocos2d/cocos/audio/android/../../2d/CCLabelTTF.h:116:30: warning: 'LabelTTF' is deprecated (declared at jni/../../cocos2d/cocos/audio/android/../../2d/CCLabelTTF.h:59) [-Wdeprecated-declarations]
static LabelTTF * create();
^
In file included from jni/../../cocos2d/cocos/audio/android/../../2d/cocos2d.h:97:0,
from jni/../../cocos2d/cocos/audio/android/ccdandroidUtils.cpp:26:
jni/../../cocos2d/cocos/audio/android/../../2d/CCLabelBMFont.h:85:188: warning: 'LabelBMFont' is deprecated (declared at jni/../../cocos2d/cocos/audio/android/../../2d/CCLabelBMFont.h:71) [-Wdeprecated-declarations]
static LabelBMFont * create(const std::string& str, const std::string& fntFile, float width = 0, TextHAlignment alignment = TextHAlignment::LEFT,const Point& imageOffset = Point::ZERO);
^
jni/../../cocos2d/cocos/audio/android/../../2d/CCLabelBMFont.h:89:33: warning: 'LabelBMFont' is deprecated (declared at jni/../../cocos2d/cocos/audio/android/../../2d/CCLabelBMFont.h:71) [-Wdeprecated-declarations]
static LabelBMFont * create();
らへんのLabel関係は警告出てるわけですが。。。これって通常のとか音声の公式提供ライブラリリンクしただけよ?

で HonyBee*3辺りだと実行時にテクスチャー初期エラーが出ます。。。*4
でも同じソース beta2なら動いたので本体依存な気もしないでもない。。。<汗


D/JniHelper(5863): JniHelper::setJavaVM(0xabb0), pthread_self() = -1345002304
D/skia(5863): purging 13K from font cache [2 entries]
D/libEGL(5863): loaded /system/lib/egl/libGLES_android.so
D/libEGL(5863): loaded /vendor/lib/egl/libEGL_POWERVR_SGX543_141.so
D/libEGL(5863): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX543_141.so
D/libEGL(5863): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX543_141.so
D/cocos2d-x debug info(5863): {
D/cocos2d-x debug info(5863): gl.supports_vertex_array_object: true
D/cocos2d-x debug info(5863): gl.supports_BGRA8888: true
D/cocos2d-x debug info(5863): gl.supports_ATITC: false
D/cocos2d-x debug info(5863): gl.supports_S3TC: false
D/cocos2d-x debug info(5863): cocos2d.x.version: 3.0-rc1
D/cocos2d-x debug info(5863): gl.supports_discard_framebuffer: true
D/cocos2d-x debug info(5863): cocos2d.x.compiled_with_profiler: false
D/cocos2d-x debug info(5863): gl.supports_PVRTC: true
D/cocos2d-x debug info(5863): cocos2d.x.build_type: DEBUG
D/cocos2d-x debug info(5863): gl.renderer: PowerVR SGX 543MP
D/cocos2d-x debug info(5863): gl.supports_ETC1: true
D/cocos2d-x debug info(5863): cocos2d.x.compiled_with_gl_state_cache: true
D/cocos2d-x debug info(5863): gl.version: OpenGL ES 2.0 build 1.7@783851
D/cocos2d-x debug info(5863): gl.supports_NPOT: true
D/cocos2d-x debug info(5863): gl.max_texture_units: 8
D/cocos2d-x debug info(5863): gl.vendor: Imagination Technologies
D/cocos2d-x debug info(5863): gl.max_texture_size: 4096
D/cocos2d-x debug info(5863): }
D/cocos2d-x debug info(5863): cocos2d: ERROR: Failed to compile shader:
D/cocos2d-x debug info(5863): precision mediump float;
D/cocos2d-x debug info(5863): uniform mat4 CC_PMatrix;
D/cocos2d-x debug info(5863): uniform mat4 CC_MVMatrix;
D/cocos2d-x debug info(5863): uniform mat4 CC_MVPMatrix;
D/cocos2d-x debug info(5863): uniform vec4 CC_Time;
D/cocos2d-x debug info(5863): uniform vec4 CC_SinTime;
D/cocos2d-x debug info(5863): uniform vec4 CC_CosTime;
D/cocos2d-x debug info(5863): uniform vec4 CC_Random01;
D/cocos2d-x debug info(5863): //CC INCLUDES END
D/cocos2d-x debug info(5863):
D/cocos2d-x debug info(5863): #ifdef GL_ES
D/cocos2d-x debug info(5863): precision lowp float;
D/cocos2d-x debug info(5863): #endif
D/cocos2d-x debug info(5863):
D/cocos2d-x debug info(5863): varying vec4 v_fragmentColor;
D/cocos2d-x debug info(5863): varying vec2 v_texCoord;
D/cocos2d-x debug info(5863): uniform sampler2D CC_Texture0;
D/cocos2d-x debug info(5863): uniform vec4 v_effectColor;
D/cocos2d-x debug info(5863): uniform vec4 v_textColor;
D/cocos2d-x debug info(5863):
D/cocos2d-x debug info(5863): void main()
D/cocos2d-x debug info(5863): {
D/cocos2d-x debug info(5863): vec4 sample = texture2D(CC_Texture0, v_texCoord);
D/cocos2d-x debug info(5863): float fontAlpha = sample.a;
D/cocos2d-x debug info(5863): float outlineAlpha = sample.r;
D/cocos2d-x debug info(5863): if (outlineAlpha > 0.0){
D/cocos2d-x debug info(5863): vec4 color = v_textColor * fontAlpha + v_effectColor * (1.0 - fontAlpha);
D/cocos2d-x debug info(5863): gl_FragColor = v_fragmentColor * vec4( color.rgb,max(fontAlpha,outlineAlpha)*color.a);
D/cocos2d-x debug info(5863): }
D/cocos2d-x debug info(5863): else {
D/cocos2d-x debug info(5863): discard;
D/cocos2d-x debug info(5863): }
D/cocos2d-x debug info(5863): }
D/cocos2d-x debug info(5863): cocos2d: Compile failed.

ココらへんの情報ぐぐると、過去のverでも定期的にデグれってるようで、次
のverで治るとかよくあるみたい。したがって様子見してたほうがいいのかも、、、



追加検証2>

の2つの修正がとりあえず必要。

//glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
glSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);

上の初期化だとSEGVで落ちる端末があるってのは何でなんかねー(汗



2.2.3メモ)
とりあえずプロジェクトの作り方が違ってて混乱したorz
統一して欲しい気もあるかなー。pythonスクリプトの作りもいまいちですし、、、

cd $HOME/cocos2d/cocos2d-x-2.2.3/tools/project-creator

python ./create_project.py -project irof -package com.hoge.driven -language cpp

//=>$HOME/cocos2d/cocos2d-x-2.2.3/projects/irof に作成される

これは色々と調べたら
-cocos2d-xのビルドを早くする (Android版) - Qiita
2系のcocos2d-x本体側のソースに確かに使用しているクラスが有るため
使わないならそのソースも除外するように修正しないと駄目とのこと。
(゜-゜)、必須なら必須でいいけど説明ないとわからないく無いか?

この話って、
build_native.py だと NDK_MODULE_PATHが切られてるけど
CDTだと普通*5環境パス等に切られてないので

$(call import-add-path, $(COCOS2DX_ROOT)/cocos2dx/platform/third_party/android/prebuilt)

$(call import-module,libjpeg)
$(call import-module,libpng)
$(call import-module,libtiff)
$(call import-module,libwebp)

をimport-add-path 等seatch pathをちゃんと定義しましょう。って話なんだよね。。

ndk-debugまでするならここまでちゃんとやらんといけないんだけど
まあ日本の*6cocos2d−x開発者的には apk作って genymotionとかに D&Dでよくね?
みたいな話が普通に出るので、まあ関心持たれてないんだろうな、、、という処。

XCodeで build_native.shを直接実行して eclipse使うのやめようぜ
みたいな記事も確かQitaあたりにあったしな。。。



testsプロジェクトをCDTで動かす)

よくわからん下記のコマンドラインで動かせと書いてるけどやりずらいので修正する

$ cd cocos2d-x/build
$ python ./android-build.py cpp-empty-test -p 10
$ adb install ../tests/cpp-empty-tst/proj.android/bin/CppEmptyTest-debug.apk


cpp-empty-test> *7

COCOS2DX_ROOT := /Users/◎◎/cocos2d/cocos2d-x-3.0rc1 #☆残念ながら絶対パスが必要

#ndk-buildで直接動かすなら以下の記述も必要
PROJECT_DIR := $(LOCAL_PATH)/../
$(shell rm -f $(PROJECT_DIR)/assets/*)
$(shell cp -fr $(PROJECT_DIR)/../Resources/* $(PROJECT_DIR)/assets)

$(call import-add-path,$(COCOS2DX_ROOT)/cocos)
$(call import-add-path,$(COCOS2DX_ROOT)/external)

cpp-tests>

COCOS2DX_ROOT := /Users/◎◎/cocos2d/cocos2d-x-3.0rc1 #☆残念ながら絶対パスが必要

$(call import-add-path,$(COCOS2DX_ROOT))
$(call import-add-path,$(COCOS2DX_ROOT)/cocos)
$(call import-add-path,$(COCOS2DX_ROOT)/external)
COCOS2DX_ROOT := /Users/◎◎/cocos2d/cocos2d-x-3.0rc1 #☆残念ながら絶対パスが必要

#ndk-buildで直接動かすなら以下の記述も必要
PROJECT_DIR := $(LOCAL_PATH)/../
$(shell rm -f $(PROJECT_DIR)/assets/*)
$(shell cp -fr $(PROJECT_DIR)/../Resources/* $(PROJECT_DIR)/assets)

$(call import-add-path,$(COCOS2DX_ROOT))




TLメモ)

*1:initだけで端末情報が送られる

*2:IOSの人が特に

*3:android 2.3.4

*4:これはRC0でも確認したら出てた。でもRC0ならARROWSだと動くんだよな。。。端末GPU依存?<汗

*5:.bash_profile等に通していなければ

*6:IOSマンセー

*7:ぶっちゃけ空プロジェクトなだけなのでイジる必要はないが。。。