网上教程不少,坑也不少,经过不懈努力,终于让我把crash日志打印在了手机屏幕上。
看到这篇文章的朋友,应该看了不少其他资料,我先直接说我踩的几点坑,可能会直接的帮助到你:
1. swift语言的崩溃无法通过NSSetUncaughtExceptionHandler捕获,因为NSSetUncaughtExceptionHandler只捕获OC代码的崩溃,例如可以捕获NSArray数组越界崩溃,却无法捕获Array的数组越界崩溃
2. swift的崩溃是通过signal来接收的,在xcode11,和swift5 的环境下是可以接收到崩溃信号的。但是,必须真机运行,而且不能联调,这点非常关键,因为经过测试发现,崩溃后,联调的断点永远都不会触发,因为联调无法终止程序,signal也不会发送,导致carsh日志并没有被记录下来。所以,联调安装后,点击app运行崩溃后,再次打开才可以看到保存起来的崩溃日志(没保存到本地,将无法看到崩溃日志)
3.线上AppStore记录的crash日志是经过符号化的,所以需要保存好每个提交到appStroe的包,重点是里面的dsym文件。
接下来是代码部分
1.在didFinishLaunchingWithOptions里面调用此方法
2.当崩溃的时候会调用signalHandler方法,保存崩溃
3.在didFinishLaunchingWithOptions的时候获取崩溃信息,调用以下方法,再次打开就可以看到崩溃信息
只是讲解了一些思路,具体还是看别人的demo吧。
下面附上Demo链接: