Firebase Crashlytics 中的崩溃报告

17 Mar 2025 | 5 分钟阅读

在上一节中,我们了解了 Firebase Crashlytics 以及如何使用它与我们的应用程序进行设置和配置。现在,我们将测试我们的 Firebase Crashlytics 实现。 因此,我们必须设置应用程序以发生崩溃,以便了解 Crashlytics 是否正常工作。

Firebase Crashlytics 提供了四种日志记录机制,以便更深入地了解崩溃报告。 这些机制是

  1. 自定义键
  2. 自定义日志
  3. 用户标识符
  4. 捕获的异常
Crash Report in Firebase Crashlytics

自定义键

自定义键有助于我们获取应用程序的特定状态,从而导致崩溃。自定义键将任意键/值对与我们的崩溃报告相关联,并在 Firebase 控制台中查看它们。 有五种设置键的方法,每种方法处理不同的数据类型。

重新设置键会更新其值

添加自定义日志消息

我们可以在应用程序中添加自定义 Crashlytics 日志,以便为导致崩溃的事件提供更多上下文。 它将日志与我们的崩溃数据关联起来,并在 Firebase 控制台中显示它们。 我们可以使用 Crashlytics.log 方法和 Log.println() 方法将日志写入崩溃报告

设置用户标识符

为了诊断问题,了解哪些用户遇到了给定的崩溃通常很有帮助。 Crashlytics 提供了一种以匿名方式在崩溃报告中识别用户的方法。 为了将用户 ID 添加到报告中,我们必须为每个用户分配一个唯一的标识符,该标识符可以是 ID 号、令牌或哈希值

如果我们需要在设置用户标识符后将其清除,请将值重置为空字符串。 当我们清除用户标识符时,它不会删除现有的 Crashlytics 记录。

记录非致命异常

记录非致命异常意味着我们可以在应用程序的 catch 块中记录捕获的异常

所有已记录的异常都将作为非致命问题显示在 Firebase 控制台中。 问题摘要包含我们通常从崩溃中获得的所有状态信息,以及按 Android 版本和硬件设备细分的数据。

Crashlytics 在专用的后台线程中处理异常,并且对应用程序的性能影响最小。

启用选择性报告

默认情况下,Firebase Crashlytics 会自动收集所有应用程序用户的崩溃报告。 我们可以通过启用更多对他们发送的数据的控制来使用**选择性报告**。 我们必须禁用自动收集,并且仅针对选择性用户初始化 Crashlytics。 我们可以使用 AndroidManifest.xml 文件中的元数据标签关闭自动收集

我们可以通过从我们的应用程序的活动之一(Fabric.with(this, Crashlytics()))初始化 Crashlytics 来为选定的用户启用收集。

管理崩溃洞察数据

崩溃洞察功能让我们可以通过将您的匿名堆栈跟踪与其他 Firebase 应用程序的堆栈跟踪进行比较来解决问题。

崩溃洞察数据在以下两种方式中提供帮助

  1. 它使您能够了解该问题是否属于更大的趋势。
  2. 它还可以提供可以帮助调试崩溃的资源。

崩溃洞察使用聚合的崩溃数据来识别常见的稳定性趋势。 我们可以从 Firebase 控制台中 Crashlytics 问题列表顶部的“崩溃洞察”菜单中选择退出“崩溃洞察”。

自定义速度警报

速度警报可以在我们的应用程序中发生任何单个问题导致紧急问题时通知我们的团队。 速度警报在我们的应用程序中的问题超过了我们在 Firebase 控制台中定义的阈值时触发。 该阈值是根据崩溃影响的用户会话的百分比定义的,该值设置在会话的 0.1% 到 1% 之间。

如果在一个特定时间段内,以下情况属实,则会触发警报

  1. 当应用程序中的问题超过了该应用程序定义的阈值时。
  2. 当应用程序在该时间段内有 250 个会话时。
  3. 以前没有为应用程序中的问题发出过警报时。

为了更新速度警报,我们必须具有必要的权限。 在 Firebase 控制台中,转到 Crashlytics 仪表板

  • 从页面顶部的应用程序下拉列表中选择应用程序。
  • 打开问题窗格顶部栏中的溢出菜单,然后选择速度警报设置。
  • 要为应用程序设置警报阈值,请按照屏幕上的说明操作。

我们可以使用电子邮件或集成将速度警报路由到我们的团队。 让我们看一个示例,在该示例中,我们将创建一个应用程序,该应用程序有一个按钮,该按钮将模拟崩溃。

activity_main.xml

Crash Report in Firebase Crashlytics

MainActivity.kt

Crash Report in Firebase Crashlytics

Crash Report in Firebase Crashlytics

Crash Report in Firebase Crashlytics

Crash Report in Firebase Crashlytics