应用程序崩溃但没有TestFlight崩溃报告

时间:2013-03-20 14:28:55

标签: iphone ios objective-c

我有一个用户(带有iPhone 5)报告我的应用程序在屏幕变黑(闪屏为黑色)后大约15秒内在启动时崩溃。用户下载了TestFlight构建,其中我在App委托中包含了检查点,但是我没有得到证据证明这些检查点已经过了,我从未收到过崩溃报告。

我将故事板上的入口点更改为空白视图控制器,现在我可以看到检查点正在交叉。我发现Watchdog暂停了应用程序,因为故事板资源需要很长时间才能加载,但所有图像都是根据需要实时构建的,除了四个小的标签栏图标。有几个音频文件,但它们是按需加载的。我想不出任何可能造成延误的其他资源。没有人报告过这个问题,我很难过。

有任何见解,尤其是我没有看到来自TestFlight的崩溃报告或检查点的原因。

1 个答案:

答案 0 :(得分:8)

你的假设是正确的,看门狗杀死了应用程序。这是因为应用程序无法正常启动,主线程被阻止或无法进行用户交互,因为没有加载UI。

据我了解您的描述,您在加载时创建资源?并且可能在主线程上执行此操作?您应该尝试将资源饥饿的代码卸载到后台线程中,而不是在主线程上执行此操作,其中较旧/较慢的设备可能需要比预期更长的时间。 UI应始终具有响应性,主线程永远不应该处理任何可能接近一秒处理的任务。

另一个原因可能是故事板和视图控制器之间的链接被破坏,实际上它从未在该设备类型上加载。

但是如果没有更多细节,就不可能说明到底发生了什么。

一般情况下:如果应用程序被iOS系统杀死,例如由于启动时间超过或由于分配了太多内存而导致看门狗,因此只有iOS可以生成崩溃报告。

问题是应用程序被杀死,在这种情况下,进程被终止。并且在该进程内运行的任何代码都无法检测到这一点。而且,由于iOS上的崩溃报告(除了基于iOS系统的崩溃记者)在同一个被杀死的应用程序进程内运行,因此无法报告或编写任何崩溃报告。

以下页面提供了有关此内容的更多详细信息:http://support.hockeyapp.net/kb/how-tos-faq/which-types-of-crashes-can-be-collected-on-ios-and-os-x(虽然有PLCrashReporter的上下文,Testflight没有使用它。但是一般语句是相同的)