'Rune's defender'游戏在安卓编译运行时出现: signal 11 (SIGSEGV) at 0xdadadade(cod=1), 程序闪退
记录下排除过程
1:sprite释放
jsb中使用release()会出现各种奇怪的问题,将不使用的sprite都设置null了;
2:粒子过多
背景粒子动画,消除粒子动画都去除,问题依然存在;
3:gl_max_texture_size / gl_max_texture_units
4:gc_for_alloc / gc_concurrent freed
5:resizing TextureAtlas capacityfrom;
createSpriteBatchNode(xxx.plist,num) 后面num参数可设定上限
6:array beyond
7:ndk-stack
8:manifest: android:hardwareAccelerated="false"; 问题仍然存在
9:取消怪物出场设置
*依然出现闪退,但闪退的时间延迟了很多,依然会发热,发热后;
*放出怪物:取消所有宝石动画,并remove掉炸弹的遮罩进行测试: 依然出现闪退;
*怪物取消层组合,去掉血条: 依然出现闪退;
*考虑怪物对象的复用设计
10:有人说是开辟内存后没有回收导致;
12:检查全局消除的递归算法,到底运行了几次;
* 将宝石下落后的全局判断,改为局部判断,对比递归调用次数;
* 调整后情况好转,但有时仍然闪退,出现越来越卡,然后闪退;
* 在调试器上加大怪物量测试:模拟器也开始变慢,但没有退出;
13:main loop循环简化
14:尝试复杂逻辑gxx绑定;
15:通过batchNode来优化怪物的渲染
http://blog.csdn.net/honghaier/article/details/8075354
http://blog.csdn.net/sdhjob/article/details/8243189
batchNode与frameCache混用 参考 SpriteTest.js // SpriteFrameTest
当渲染批次达到200以上时,在mac模拟器上的fps都只有30帧
控制渲染批次,可先取消血条
spriteBatchNode子元素无法添加progress,只能是addchild sprite, 可以是sprite里面还有sprite;
16:使用Xcode检查内存泄露
http://blog.csdn.net/totogo2010/article/details/8233565
17:测试安卓的release模式发布;
依然出现闪图
==============================
18:闪退问题已解决,见以下网址中的, jsb cc.CallFunc.create问题部分:
http://www.cnblogs.com/sslin/archive/2013/03/27/2983826.html