【问题标题】:Firebase crash reporting for iOS doesn't send crashes despite successful init尽管成功初始化,但 iOS 的 Firebase 崩溃报告不会发送崩溃
【发布时间】:2016-06-10 12:15:14
【问题描述】:

我在我的 iOS 项目中添加了 firebase 崩溃报告(添加了 pod、添加了构建阶段脚本、将 json 添加到项目中……)。 当我运行我的应用程序时,我在控制台中看到:

Firebase Crash Reporting: Successfully enabled

为了进行测试,我在 FIRApp.configure() 代码之后的代码中插入了 fatalError() (这里建议:https://firebase.google.com/docs/crash/ios#create_your_first_error)。

下次启动应用时不会发送崩溃报告(不会崩溃)。我在我的 xcode 控制台中什么都看不到,在我的 Web 控制台中什么也看不到。

【问题讨论】:

  • 应用程序在启动时会立即崩溃吗?如果是这样,那是行不通的,因为 SDK 需要时间来发送崩溃。

标签: ios swift firebase firebase-crash-reporting


【解决方案1】:

不是立竿见影的解决方案,而是一些可能有助于定位问题的诊断技巧:

  • 确保当您在模拟器或连接的设备中生成崩溃时调试器是禁用,否则调试器会在 FCR 之前捕获崩溃。在 Xcode 中启动应用 (⌘R),在 Xcode 中停止调试器 (⌘.),然后在模拟器或设备上手动重新启动应用。
  • 如果您正在使用模拟器并按照上述说明进行操作,那么您应该会在执行命令 find ~/Library/Developer/CoreSimulator -path '*/FCRDumps/*.dmp' -ls 时看到生成的原始故障转储(请注意,还会显示来自其他测试应用程序的未处理崩溃)。李>
  • 如果您看到一个或多个带有正确时间戳的转储文件,那么您应该会在下次启动应用程序时成功上传。删除 fatalError() 行,然后重新构建并重新启动。该容器中的.dmp 文件很快就会消失,取而代之的是.crash 文件(使用find ~/Library/Developer/CoreSimulator -path '*/FCRCrashQueue/*.crash' -ls 查找它们)。崩溃文件将在成功上传后一次删除。

【讨论】:

  • 在调试模式下崩溃报告工作正常。当我分发到 TestFlight 并且应用程序崩溃时,不会生成任何数据。这是预期的行为吗?
  • 我找到了 6 个 .dmp 文件,但没有找到 .crash 文件。我的应用程序在模拟器中运行,它没有连接到调试器。我使用 fatalError() 运行它,没有使用 fatalError() 我得到了 Firebase Crash Reporting: Successfully enabled 但在我的 Firebase 控制台中没有报告:(
  • 我使用的是 Xcode 8.1,它根本无法在模拟器上运行,但在真实设备上运行良好。也许只是试一试。
  • 它也在模拟器中工作。首先我在我的代码中使用 .fataError() 行然后应用程序崩溃,然后检查崩溃报告但未找到。我在终端中使用上述命令检查然后它显示列表的错误。然后我从代码中删除 .fatalError 行并运行项目,然后它在控制台中显示“崩溃上传成功:”。然后当我检查报告时它显示错误
  • 重要提示:您必须手动生成 CRASH。上传到 Firebase 本身可以通过附加调试器来完成。因此,首先从调试器中触发崩溃,然后在代码中仍然存在“FatalError()”的情况下,手动运行应用程序。然后删除“FatalError()”并再次从 Xcode 运行应用程序。
猜你喜欢
  • 1970-01-01
  • 2016-10-10
  • 2015-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多