1.原因
在bugly上查看崩溃日志,有一个频繁发生的崩溃:libsystem_kernel.dylib __abort_with_payload
从第4行可以看出,这是一个隐私违规。那么很容易猜测:定位、图片库、相机等等。此时我们去info.plst
中查看是否忘记了添加哪个权限即可。
然而还是崩溃!!!
发现我们所有用到的权限都已经添加:定位、录音、图片库、相机,就这四个。
继续查找其他原因,先看看其他的栈信息,我们找到了如下关键点:
注意第3行,方法为_isPhotosAccessAllowedWithScope:accessAllowedHandler:
。看名字应该就是图片库的某一个权限。
然后查看bugly中记录的跟踪记录,发现大体为两种崩溃:
1.崩溃在WKActionSheet
:
2.崩溃在
WKImagePreviewController
:这显然是WebKit内部的,然后就是复现了。找到webView中有图片的地方,各种点击,双击,长按手势都试了一遍,最后发现长按某些图片的时候,会弹出actionSheet
,其中会有保存图片的功能:
点击后果然发生了崩溃!这是因为没有添加往相册加入图片的权限。
总结:
在iOS13中,长按图片会弹出上图所示的菜单栏,此时查看视图层级,发现就是WKImagePreviewController
。在iOS13以下,长按会弹出系统ActionSheet
,此时就是WKActionSheet
。
解决
添加Privacy - Photo Library Additions Usage Description
即可解决。