Flutter开发-[iOS Crash] Crash on some iPhone when running the app on Flutter SDK1.17.0/1.17.2/1.17.4
Flutter应用在用户中出现小面积Crash
现象
app运行就闪退,出现的机型包括iOS12.x,iOS13.5.1,iOS14等;Flutter版本1.17.2
通过友盟查看日志
我们通过友盟去查看了一下崩溃的日志,只能看到引起崩溃的内容是flutter相关的东西,没有什么实质性的输出无法定位到具体问题。
问题复现
为了解决这个crash问题,我们想办法联系到了客户,通过testflight让用户共享崩溃数据,问题重现,拿到日志后,依然无法定位到问题。刚好博主的手机升级到iOS14后重现了这个问题,通过真机调试,完美复现。然而,接下来的结果惊呆了博主,没有日志输出,从lldb的提示可以看到如下信息:
#0 0x0000000103a819c0 in std::__1::__function::__func<flutter::Picture::RasterizeToImage(sk_sp<SkPicture>, unsigned int, unsigned int, _Dart_Handle*)::$_1, std::__1::allocator<flutter::Picture::RasterizeToImage(sk_sp<SkPicture>, unsigned int, unsigned int, _Dart_Handle*)::$_1>, void ()>::operator()() ()
全局搜索,也没有找到相似的名字。
除此外,博主还发现,通过USB连接手机,使用debug模式运行,可以打开app,不会闪退,断开usb连接后,重新点击已安装的app,闪退,博主又尝试通过release模式直接运行app到手机,闪退,无报错信息,lldb信息同上。
尝试更换Flutter版本
使用最新的1.17.4,依旧闪退,lldb信息如下:
#0 0x000000010141f1c8 in ___lldb_unnamed_symbol1927$$Flutter ()
使用1.17.0/1.17.1,依旧闪退,lldb信息同上,无解。
使用1.12.13,发现crash问题神奇的解决了,但是代码中有使用1.17.x里面的新方法,需要做兼容。iOS14不再崩溃,发给客户安装后,也不再出现崩溃。
问题定位
通过以上尝试,可以确定问题是出在flutter内部的,和SDK版本相关,考虑到主动去解决这个问题的时间成本,所以向官方提出issues
和官方沟通过程
提出issues后,应官方要求提供了必要的一些信息,同时博主还发现,即使是一个什么都没做的Hello World!空白项目,也同样存在crash问题,做实了官方SDK的问题。目前已经被官方复现并添加到crash记录中,同时博主也发现此类问题还有其他人提出来,都是近期发生的。 issues地址 如遇到此问题,欢迎大家一起来讨论。
总结
此问题出现始于1.17.0,爆发于6月中旬,随着各团队更新flutter SDK后,并提交新包到市场,用户开始反馈crash问题。目前已知,该crash只对苹果用户有影响,安卓用户不受影响。
转载自:https://juejin.cn/post/6936063403610472456