我已经在我的一个 iOS 应用程序中设置了 Crashlytics,并将该应用程序安装在真实设备上。我的 Crashlytics 仪表板显示,我已成功添加该应用程序。但是,它不会发送崩溃报告。我的网速不太好。但是我可以通过这个设备查看我的电子邮件。谁能猜到,问题出在哪里?
17 回答
Xcode 调试器不允许 Crashlytics 处理崩溃报告。是的,当我第一次阅读时,这对我来说似乎很奇怪,但这是事实(来源)。这就是我们在以下情况下从未看到崩溃报告的原因:
- 在模拟器中
运行应用程序 - 在 iDevice 上运行应用程序,直接从 Xcode 构建并运行调试器。
要确保在测试期间报告崩溃(从 Crashlytics 支持网站复制):
1. 启动模拟器
2. 按停止
3. 启动您的应用程序并强制崩溃
4. 从模拟器重新启动应用程序
5. 请参阅崩溃报告网络仪表板。
编辑:
添加了参考;Crashlytics 还提供了一篇关于强制崩溃的快速方法的简短文章。
任何崩溃报告器无法在 iOS 上工作的主要原因是来自不同崩溃报告器的干扰。但是,特别是对于 Crashlytics,可能会有一些特定于它们的东西导致崩溃报告没有被报告。
Xcode 调试器不允许Any Crash Reporter处理崩溃报告。这是因为 XCode 覆盖了崩溃处理回调中的任何挂钩。这仅在以下情况下发生:
- 在模拟器中运行应用程序(打开调试器)
- 通过打开调试器直接从 Xcode 构建和运行,在 iDevice 上运行应用程序。
确保在测试期间报告崩溃 ( http://support.crashlytics.com/knowledgebase/articles/92523-why-can-ti-have-xcode-connected- ):
- 启动模拟器
- 按停止
- 启动您的应用程序并强制崩溃
- 从模拟器重新启动应用程序
- 请参阅 Web 仪表板中的崩溃报告。
虽然它仍然是一个超级老视频,但这是上述步骤的视频(来自 Crittercism 的示例):https ://www.youtube.com/watch?v=sU6Su3PBFH4
对我来说,问题是设备已连接到我的 Mac :) 来自此来源:
此外,如果您将设备连接到 Mac,XCode 的调试器也会介入。因此,只需在测试前断开设备连接即可:)
我使用以下步骤找到了解决方案
1. 转到编辑方案 2. 运行 -> 信息 3. 将构建配置更改为发布。现在运行应用程序崩溃它。您将收到邮件。
我们最近遇到了这个问题,我发现构建脚本被删除的某个地方。使用以下内容重新添加它为我们解决了这个问题:
./Crashlytics.framework/run <your_api_key> <build_secret>
注意:使用 Cocoapods 时,您需要使用以下内容而不是上述内容(来源):
./Pods/CrashlyticsFramework/Crashlytics.framework/run
添加构建脚本:
- 要在 Xcode 6 中添加运行脚本构建阶段,请在项目中选择应用程序目标,然后选择“构建阶段”。
- 单击小“加号”图标并选择“新建运行脚本构建阶段”。
- 您现在应该在 Build Phase 选项的中间看到一个 Run Script 部分,如上所示。
- 在运行脚本构建阶段的主体内,粘贴脚本。`
上面的引用来自 Crashlytics 的视觉教程,在这篇文章中引用。
注意:我最初为Crashlytics error code: 202 when Submitting files逐字发布了这个答案。
从 RayWenderlich 网站:
如果 Xcode 拦截崩溃事件,您将不会收到任何崩溃报告!要使下面的所有示例都能正常工作,您必须构建并运行应用程序,然后单击 Xcode 上的停止按钮。这样,您将在设备上安装最新版本。完成后,您可以在设备本身上启动应用程序,然后随心所欲地崩溃!您的 iOS 设备上的所有崩溃都将被捕获并发送到您已集成到应用程序中的服务的服务器组件。崩溃报告通常会在您下次启动应用程序时发送到服务器,因此在服务器上生成崩溃报告的步骤如下: 在 Xcode 上构建并运行。按下停止按钮。在您的 iOS 设备上运行该应用程序。使应用程序崩溃。再次运行应用程序。
Crashlytics works for me until now. I don't know why but now it doesn't work.
You should turn debug-mode on by
[Crashlytics sharedInstance].debugMode = YES;
My problem is here Crashlytics error code: 202 when Submitting files :(
确保你没有过早地强迫崩溃。
设置[Crashlytics sharedInstance].debugMode
为YES
;
注意
Crashlytics] Settings loaded
在 Xcode 控制台日志上。
然后强制崩溃并重新启动应用程序,现在将报告崩溃。
我在尝试测试崩溃代码时遇到了类似的问题。
Crashlytics.sharedInstance().crash()
我在没有 Xcode 的设备上运行我的应用程序,并且崩溃不会出现在 Crashlytics 仪表板上。对我有用的是来自 Crashlytics 网站的以下提示:
- 确保在崩溃后启动应用程序,以便可以上传崩溃
我注释掉了上面的 crash() 调用,并重新运行了该应用程序。然后崩溃出现在仪表板中。
如果您不上传 dSYM 文件,即使报告已成功上传,Crashlytics 也不会显示您的崩溃。
如果您已将构建脚本设置为仅在 CI 服务器上运行,您可能会遇到此问题。然后,如果您通过 xcode 将您的应用程序复制到您的手机,并且您在没有附加到调试器的情况下运行它,则由于缺少 dSYM 文件,报告将被上传但被忽略。
您是否尝试过[[Crashlytics sharedInstance] crash]
在设备上运行并查看是否会被报告?Crashlytics 可能无法工作的原因有几个,包括其他崩溃报告器等。
有时,日志显示需要一些时间。我可以在 15-20 分钟后找到它们
我觉得其中一个问题是在运行脚本阶段,它应该是 CrashLytics 的单独运行脚本阶段。什么时候有运行脚本
./Fabric.framework/run
使用我的其他一些脚本,一切正常,提交了 CrashLytics 日志显示报告,但 Web 界面中没有任何内容。
当我仅使用 Fabric 运行添加另一个运行脚本阶段时,它看起来就像一个魔术 :)
我的第一次尝试是使用 cocoapods,但没有奏效。当我手动添加所有框架和一个单独的运行脚本阶段时。
这对我有用,
如果您在 iDevice 上进行测试,只需将 iDevice 与您的 Xcode 拔下并运行您的应用程序。现在,如果崩溃,它将在仪表板上更新。
我通过在运行脚本中取消选择“仅在安装时运行脚本”选项来解决(一个用于 Fabric(crashlytics))