关于一次Shader导致Android真机闪退问题

 某一天,我增加了一个东西之后,导出安卓包测试一下流程,机子跑着跑着,突然闪退了,于是乎就用adb输出一下日志。看到这段东西,我懵逼了,怎么突然间不是熟悉的代码呢?

没办法,只能用肉眼观察法+输出大法来处理了。

于是乎我肉眼观察之后,发现是在某个预设生成出来,代码运行之后大概3秒左右闪退的。所以,我就先在闪退的前后中输出一下这个东西

 发现每次都是在在这前后闪退的。

所以,我首先怀疑的是GameObject的问题,毕竟每次都是跑到这里的时候就闪退的。所以刚开始的时候,我就用一个bool值去测试选择最终是走哪里,譬如我设置InGameConfig.isNextStation走下面的话,就跑了一整天了,没有闪退情况了。所以断定,就是在这个Gate的预设里面出问题了。

一开始,我遇到了一些阻碍,因为,我开始以为是预设里面的代码问题,因为我写的代码有狠多的回调引用,所以我一路修改代码的引用null。但是问题依然出现。所以,这里的问题不是代码引起的。

 

后来,我发现了一个关键字,libGLES_mali.so这个库,这个是一个关于图形方面的库来的,GLES,上网搜索了一下,是关于OpenGLES的着色器的关联库。于是乎,我就大胆猜测一下,是不是shader不兼容机器的问题呢?因为安卓真机和pc环境不同,shader也有可能不兼容的,导致奔溃闪退的。

所以,我就将出现问题的预设导出到一个新的项目当中,减少其他代码或者预设干涉。然后,我就用删除大法,逐个将一些使用不同shader材质球都GameObject删除一下,看看究竟是哪个shader出现问题。

 后来,测试过删除到某个挂有材质球的某个Shader之后,机子测试了一个小时都没有闪退了,那么就可以肯定是用了这个Shader,机器不兼容,出现闪退问题。

 后面,将这个有问题的GameObject 删除或者更改一下shader之后,就木有再出现问题了。美滋滋!!当然,效果的话,还是要美术去找找修改才行,唉,又要多次测试一下shader才能确定下来呗

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值