Android上的奇葩问题真的是太多了,开始测试反馈说游戏在某些Android手机上随机crash,后来经过详细的测试发现随机闪退的手机都是搭载了高通骁龙800以上的CPU。然后连上真机当crash的时候错误的日志是:
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 6ed5c800
然后打印出了一大堆的内存信息,今天记录一下解决方案也许正是你也在寻找的。
但是用OpenGL ES 3.0打包就不存在这个问题。。
只能说高手在民间 绕了一大圈是NGUI的问题 。 http://www.tasharen.com/forum/index.php?topic=8415.msg48493#msg48493
此问题NGUI的最新版本已经修正了,可是搞过NGUI的都知道,尤其像快上线的项目无论如何也不能升级,因为一升级整个工程就会出各种奇葩问题。。。 我们也是抱着试试看的心态改的。
我目前的NGUI版本是3.5.3有可能前后几个版本的NGUI都存在这个问题。
找到你的NGUI里的UIDrawCall.cs类。如下图所示,左边是NGUI的最新版本, 右边是我现在的版本,当安卓平台不要执行下一句代码。
#if !UNITY_ANDROID
if (!trim && (verts.size << 1) < verts.buffer.Length) trim = true;
#endif
我个人觉得最好NGUI还是升级一下。鬼知道会不会还有啥奇葩问题~~~~~
- 本文固定链接: https://www.xuanyusong.com/archives/3187
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!
android 那么多机型 momo大神你们项目组是如何做测试的呢
我们项目也遇到了这个情况,然后我们的解决办法是在PlayerSetting里安卓Graphics Level选强制OpenGL2.0就OK了,你们可以试试
我遇到过Untiy3d4.3,4 打包到小米2S必Crash,当时错误日志也是打印Opengles相关,日志看上去好像是Opengl库出错。后来经过不断试验,只要在这个必Crash前,有执行MonoBehaviour.OnGUI的代码,Crash就没有了,之后没有去深究,估计是Unity3d底层原因。
你好,这个问题有没可能导致iphone崩溃呢,最近做的东西就是iphone上很容易崩溃,安卓上也有些崩溃。。。T T
我们注释掉了这个代码,发现内存狂飙40M。
注释掉的代码,有可能会导致Mesh Size变的很大,从而吃掉更多的内存。和randomly crash相比,可能会好一点。
这个根本不是NGUI的bug。而且你也给出了http://www.tasharen.com/forum/index.php?topic=8415.msg48493#msg48493连接。很怀疑你有没有仔细看这篇帖子。你注释掉的代码只是一种work around的办法。这应该是Unity或者是adreno driver的问题。
我原来用的是3.6.6有这个问题,知道是NGUI的问题,但不知道什么原因。今天看到你的文章我升级到了3.7.1,可是还有这个问题…… 隐藏全部UI就不会闪退,开启UI运行5秒android机闪退,IOS没有问题……
3.5.3升3.5.7好像不会有什么问题。
我特别想测试出来闪退。我特别想测试出来闪退。但是看blog说,我手持 sony z1, z ultra都没测试出来。但是看blog说,我手持 sony z1, z ultra都没测试出来。
NGUI内存泄露的问题