cocos2dxjs binding安卓运行时出现signal 11 (SIGSEGV) 程序闪退问题记录

'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

原文地址:https://www.cnblogs.com/sslin/p/2972152.html