以编程方式读取iOS应用程序崩溃文件



根据我的理解,当iOS应用程序崩溃时,系统会创建一个可以通过Xcode访问的.class文件。是否可以从应用程序本身以编程方式读取此文件?

我的意图是将这个崩溃日志(如果存在)发送到服务器,这样我们就可以在没有用户干预的情况下分析日志。有几个崩溃报告服务(例如bugsense、crashlytics)能够做到这一点,所以我认为自定义实现应该是可能的?

无法从应用程序中读取iOS系统生成的崩溃报告。原因是你的应用程序在沙盒中运行,无法访问沙盒之外的任何内容。因此,如果你试图从沙盒之外的路径读取文件或目录,你将无法获得任何数据。

获取崩溃报告的唯一选择是在代码中添加一个库,该库能够检测崩溃、创建报告并以某种方式发送它们。大多数人都会将其发送到服务器,因为通过电子邮件获取数千份崩溃报告的效率不是很高,还考虑到获取类、方法和行号信息所需的符号化过程。

一个流行且安全使用的开源库是PLCrashReporter。大多数服务都使用这个,少数服务编写自己的功能来实现功能。有一个开源应用程序可以比较不同的崩溃报告服务和库,名为CrashProbe(免责声明:我是它的开发人员之一)。该项目的网站位于http://crashprobe.com其中已经比较了服务列表。

同样需要注意的是,拥有一个特定的崩溃报告库对于好的崩溃报告是不够的,因为符号化过程需要能够转换崩溃报告中的信息,以便为堆栈跟踪中的每个帧指向正确的类名、方法名、文件名和行号。

我建议比较似乎符合您需求的服务(也使用CrashProbe),然后决定哪种服务最适合您的用例。

我不会推荐任何服务,因为根据stackoverflow指南,这是不允许的。

最新更新