自定义您的 Firebase Crashlytics 崩溃报告

您只需要对 Firebase Crashlytics 进行极少量设置就可以让其工作。在您添加 SDK 后,Crashlytics 就会立即开始将崩溃报告发送到 Firebase 控制台

为了让您更深入地了解崩溃报告,Firebase Crashlytics 提供了四种开箱即用的日志记录机制:自定义键自定义日志用户标识符捕获的异常

以下说明适用于 Java 和 Kotlin。如果您的应用使用的是 Android 原生库,并且您希望 NDK 代码具有这些功能,请与 Firebase 客户支持团队联系。

添加自定义键

自定义键可以帮助您获取导致崩溃的应用的特定状态。您可以将任意键值对与您的崩溃报告相关联,然后在 Firebase 控制台中查看这些键值对。

有五个用来设置键的方法。每一个方法处理的数据类型都不相同:

Java

Crashlytics.setString(key, "foo" /* string value */);

Crashlytics.setBool(key, true /* boolean value */);

Crashlytics.setDouble(key, 1.0 /* double value */);

Crashlytics.setFloat(key, 1.0f /* float value */);

Crashlytics.setInt(key, 1 /* int value */);

Kotlin

Crashlytics.setString(key, "foo" /* string value */)

Crashlytics.setBool(key, true /* boolean value */)

Crashlytics.setDouble(key, 1.0 /* double value */)

Crashlytics.setFloat(key, 1.0f /* float value */)

Crashlytics.setInt(key, 1 /* int value */)

重新设置某个键可以更新其对应的值,例如:

Java

Crashlytics.setInt("current_level", 3);
Crashlytics.setString("last_UI_action", "logged_in");

Kotlin

Crashlytics.setInt("current_level", 3)
Crashlytics.setString("last_UI_action", "logged_in")

添加自定义日志消息

要为导致崩溃的事件提供更多背景信息,您可以向您的应用添加自定义 Crashlytics 日志。Crashlytics 会将日志与您的崩溃数据相关联,并在 Firebase 控制台中显示这些日志。

在 Android 设备上,请使用 Crashlytics.log 来帮助查明问题。

Crashlytics.log 既可以将日志写入崩溃报告并执行 Log.println(),也可以仅写入下一个崩溃报告:

设置用户标识符

要诊断某个问题,了解哪些用户遇到了特定的崩溃通常很有帮助。Crashlytics 提供了一种在崩溃报告中以匿名方式标识用户的方法。

要将用户 ID 添加到报告中,请以 ID 编号、令牌或哈希值的形式为每个用户分配一个唯一标识符:

Java

Crashlytics.setUserIdentifier("user123456789");

Kotlin

Crashlytics.setUserIdentifier("user123456789")

如果您在设置某个用户标识符后需要将其清除,请将该值重置为空白字符串。清除用户标识符不会移除现有的 Crashlytics 记录。如果您需要删除与用户 ID 关联的记录,请与 Firebase 支持团队联系

记录非严重异常

除了自动报告您的应用中出现的崩溃,Crashlytics 还可让您记录非严重异常。

在 Android 上,这意味着您可以在应用的 catch 块中记录已捕获到的异常:

Java

try {
    methodThatThrows();
} catch (Exception e) {
    Crashlytics.logException(e);
    // handle your exception here
}

Kotlin

try {
    methodThatThrows()
} catch (e: Exception) {
    Crashlytics.logException(e)
    // handle your exception here
}

所有记录的异常在 Firebase 控制台中均显示为非严重问题。问题摘要中会包含您通常从崩溃中可以获得的所有状态信息,以及按 Android 版本和硬件设备细分的数据。

Crashlytics 在一个专用的后台线程中处理异常,所以对您的应用性能的影响极小。为了减少用户的网络流量,Crashlytics 会将已记录的异常汇集到一起,并在下次应用启动时批量发送这些异常。

Crashlytics 只存储一个应用会话中最近的 8 次异常。如果您的应用在一个会话中抛出的异常数超过了 8 个,则较早的异常会被舍弃。

启用自选式报告

默认情况下,Firebase Crashlytics 会自动为您的应用的所有用户收集崩溃报告。为了让用户对其发送的数据有更多的控制权,您可以启用自选式报告功能。

为此,您必须停用数据自动收集,并只为选择发送报告的用户初始化 Crashlytics。

  1. 在您的 AndroidManifest.xml 文件中,使用 meta-data 标记来关闭自动收集功能:
    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. 在应用的某个 Activity 中初始化 Crashlytics,从而为选定的用户启用收集功能:

    Java

    Fabric.with(this, new Crashlytics());

    Kotlin

    Fabric.with(this, Crashlytics())
注意:一旦您在应用会话中对 Crashlytics 进行了初始化,就无法再停止 Crashlytics 报告功能。在您初始化 Crashlytics 之后,用户若要选择停用报告功能,则必须重启您的应用。

管理 Crash Insights 数据

Crash Insights 会比较您的匿名堆栈轨迹和来自其他 Firebase 应用的跟踪数据,并让您知道您的问题是否属于个例,从而帮助您解决问题。对于许多问题,Crash Insights 甚至会提供资源来帮助您调试崩溃。

Crash Insights 使用汇总的崩溃数据来识别常见的稳定性趋势。 如果您不想分享应用的数据,则可以在 Crash Insights 菜单中选择停用 Crash Insights。此菜单位于 Firebase 控制台的 Crashlytics 问题列表顶部。