iOS13-Crash

272 阅读2分钟

记录一个iOS13的crash(仅限iOS13,亲测iOS13以下的系统不会出现),线上崩溃,心碎了一地,默念一句mmp。。。 accessing _cachedSystemAnimationFence threading violation: expected the main thread 先上两张bugly上报的crash图片!!!

2149547-8eab589b1d45673f.png

2149547-8eab589b1d45673f.png

两个crash异曲同工,根源就是线程问题,在非UI线程操作了UI,结果就一目了然了(gg),但是有一点提醒一下大家,此crash只在iOS13的系统中出现,当然也不是必现,经过了一天一夜的调试,终于被我找到了复现路径,哈哈 找到复现路径的那一刻心里甭提多开心了,因为这就意味着问题可以迎刃而解了,我的这个问题是出现在app调用一键登录的时候,项目中用到了阿里云一键登录SDK,当网络正常时无论如何都不会出现这个问题,我看着bugly的堆栈报错信息,心里猜想app是在网络环境非常差导致连接超时,刚好在这个时候操作了UI,结果就gg!附上一张堆栈报错图

2149547-66049a01286614dd.png

接下来我就有信心了,拿着测试机模拟弱网络环境,幸好苹果手机有低数据模式(Lowdata-mode)然后我把4G关掉用3G+低数据模式,最后运行app,第一次没有出现crash,第二次出现了,紧接着我就开始调试,最后打印了线程查看,果然是在非UI线程操作了UI,不得不说苹果爸爸越来越严格啦,不过这也说明苹果系统现在更加严谨出色,点个赞👍 附上一张控制台log图片

2149547-66049a01286614dd.png

找到原因所在,就可以愉快的解决了,将UI操作添加到主线程这个问题就解决了

2149547-a94a0316d39586c0.png

现将此问题分享给大家,有遇到相同问题的朋友可以节省一点点时间,如有其他解决方案欢迎讨论哈😀

总结下个人经验: 遇到崩溃先别慌,看报错信息,查看堆栈,第一时间没有头绪可以大胆猜测原因,然后去验证,多查查资料,最后问题一定会解决滴!