剧情:当游戏在登录的时候切换帐号(点击sdk小球),导致游戏崩溃,日志里面看不到c#端的报错信息。有用的信息如下
原因
从上图中讲道理看不出什么问题,大概猜到的是内存问题,或者native层的问题。所以一直在排除问题(笨笨的log日志输出看哪里崩溃掉了)
这里不说查找问题的艰辛了,直接说结果吧。在选择角色的地方我们客户端小同学没有清晰的理解缓存池,所以导致了两次删除资源,最后内存崩溃了。
(根本原因:客户端同学大量使用了DestroyImmediately这个函数导致删除的时候直接把内存镜像的文件也删除了最终导致崩溃) **
在查找这个问题的时候我还看到网上有类是的bug 处理是manifest的配置导致的,具体修改如下
Figured it out. The intent-filter block should have been inside UnityPlayerNativeActivity and NOT UnityPlayerProxyActivity
意思就是说不能把intent-filter这个东西放到Unity的代理activity中去,不过我们这个刚好不是这个问题
总结
1.以后遇到这种问题首先应该想到的是这个问题不应该是c#端引起的,因为c#是托管类型的代码,很容易有异常报错看到,比如“空指针”,“数组越界”等等
2.多操作几下界面看有什么反馈,比如我这里是点击了选人之前的界面才发现只有那个界面会出现这个问题,那么我们的范围就缩小了,很容易就看到了
导致内存问题的地方。 多动动没错也许会给你找问题提供新的思路。