对于u3d在手机上闪退,基本上可以说是无法避免的,原因有千千万万,举个例子,各种品牌的手机,会用不同的芯片,比如高通,联发科,个人印象中高通是最好的。联发科也还行。同一种芯片也会有各种不同类型,不同类型就意味着不同的架构,内核,而手机又有各种rom,各种操作系统的坑,所以闪退,是肯定存在的。问题在于怎么处理。
首先,我不想讨论逻辑上的bug,比如你自己的C#代码访问了空指针,这种bug看下日志就可以发现,我这里只想说的是你发现在电脑上正常,在部分手机上正常,但在某些手机上就会闪退的情况。
比如,我们的游戏在华为3c上就会闪退。那么怎么办呢。
闪退的唯一信息就是安卓日志,你需要打开adb logcat,首先我建议用*W选项,这样可以过滤掉大部分安卓日志信息,不然你会发现你的日志有几万条。
ok,大致找到日志如下:
Fatal signal 7 (SIGBUS) at 0x7d3da000 (code=2), thread 9713 (UnityMain)
总之起码找到了崩溃的点。然后就是开启日志的选项,你需要看的是全部的日志信息:
07-15 03:25:42.748 I/PGApp ( 1440): onLowMemory...
。。。。。
07-15 03:26:10.888 E/Sensors ( 1095): sensors_poll_context_t::pollEvents, line 211: receive event #### i=3, nb=1
07-15 03:26:11.8