Catch up on everthing we announced at this year's Firebase Summit. Learn more

自定義您的 Firebase Crashlytics 崩潰報告

本指南介紹瞭如何使用 Firebase Crashlytics SDK 自定義崩潰報告。默認情況下,Crashlytics自動收集您的所有應用程序的用戶(可以關閉自動崩潰報告和崩潰報告能夠選擇在報告為您的用戶,而不是)。 Crashlytics提供了四個日誌機制開箱:自定義鍵自定義日誌用戶標識符捕獲的異常

添加自定義鍵

自定義鍵可幫助您獲取導致崩潰的應用程序的特定狀態。您可以將任意鍵/值對與崩潰報告相關聯,然後使用自定義鍵在 Firebase 控制台中搜索和過濾崩潰報告。

  • Crashlytics儀表盤,你可以搜索匹配的自定義密鑰的問題。

  • 當您查看在控制台的一個具體問題,您可以查看每個事件(子選項卡),甚至通過過濾器自定義鍵的事件(在頁面的頂部濾鏡菜單)相關的自定義鍵。

使用setCustomKey實例方法來設置鍵/值對。需要注意的是setCustomKey超載的value參數接受任何原始的或String參數。這裡有些例子:

爪哇

FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("my_string_key", "foo" /* string value */);

crashlytics.setCustomKey("my_bool_key", true /* boolean value */);

crashlytics.setCustomKey("my_double_key", 1.0 /* double value */);

crashlytics.setCustomKey("my_float_key", 1.0f /* float value */);

crashlytics.setCustomKey("my_int_key", 1 /* int value */);

科特林+KTX

val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("my_string_key", "foo") // String value
    key("my_bool_key", true)    // boolean value
    key("my_double_key", 1.0)   // double value
    key("my_float_key", 1.0f)   // float value
    key("my_int_key", 1)        // int value
}

您還可以通過調用鍵並將其設置為不同的值來修改現有鍵的值。例如:

爪哇

FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();

crashlytics.setCustomKey("current_level", 3);
crashlytics.setCustomKey("last_UI_action", "logged_in");

科特林+KTX

val crashlytics = Firebase.crashlytics
crashlytics.setCustomKeys {
    key("current_level", 3)
    key("last_UI_action", "logged_in")
}

通過傳遞的一個實例批量添加鍵/值對CustomKeysAndValuessetCustomKeys實例方法:

爪哇

CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder()
.putString("string key", "string value")
.putString("string key 2", "string  value 2")
.putBoolean("boolean key", True)
.putBoolean("boolean key 2", False)
.putFloat("float key", 1.01)
.putFloat("float key 2", 2.02)
.build();

FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);

科特林+KTX

對於科特林,現有的功能比使用簡單CustomKeysAndValues建設者。

crashlytics.setCustomKeys {
  key("str_key", "hello")
  key("bool_key", true)
  key("int_key", 1)
  key("long_key", 1L)
  key("float_key", 1.0f)
  key("double_key", 1.0)
}

添加自定義日誌消息

要為導致崩潰的事件提供更多上下文,您可以將自定義 Crashlytics 日誌添加到您的應用程序。 Crashlytics聯營公司與中的Crashlytics頁面的崩潰數據並顯示它們的日誌火力地堡控制台日誌選項卡下。

使用log ,以幫助確定問題。例如:

爪哇

FirebaseCrashlytics.getInstance().log("message");

科特林+KTX

Firebase.crashlytics.log("message")

設置用戶標識符

要診斷問題,了解哪些用戶遇到了給定的崩潰通常很有幫助。 Crashlytics 包括一種在崩潰報告中匿名識別用戶的方法。

要將用戶 ID 添加到您的報告中,請以 ID 號、令牌或散列值的形式為每個用戶分配一個唯一標識符:

爪哇

FirebaseCrashlytics.getInstance().setUserId("user123456789");

科特林+KTX

Firebase.crashlytics.setUserId("user123456789")

如果您在設置後需要清除用戶標識符,請將值重置為空字符串。清除用戶標識符不會刪除現有的 Crashlytics 記錄。如果您需要刪除一個用戶ID,相關的記錄接觸火力地堡的支持

(僅限Android NDK)元數據添加到NDK崩潰報告

您可以選擇包括crashlytics.h頭在你的C ++代碼添加元數據,以NDK崩潰報告,如自定義鍵自定義日誌用戶標識符。所有這些選項都在上面的這個頁面上進行了描述。

crashlytics.h可作為僅標頭C ++庫中的火力地堡Android SDK中的GitHub庫

有關使用 NDK C++ API 的說明,請閱讀頭文件中的註釋。

報告非致命異常

除了自動報告您的應用程序崩潰之外,Crashlytics 還允許您記錄非致命異常並在您的應用程序下次啟動時將它們發送給您。

使用recordException方法記錄在您的應用程序的非致命異常catch塊。例如:

爪哇

try {
    methodThatThrows();
} catch (Exception e) {
    FirebaseCrashlytics.getInstance().recordException(e);
    // handle your exception here
}

科特林+KTX

try {
    methodThatThrows()
} catch (e: Exception) {
    Firebase.crashlytics.recordException(e)
    // handle your exception here
}

所有記錄的異常在 Firebase 控制台中都顯示為非致命問題。問題摘要包含您通常從崩潰中獲得的所有狀態信息,以及 Android 版本和硬件設備的故障信息。

Crashlytics 在專用後台線程上處理異常,以盡量減少對應用程序的性能影響。為了減少用戶的網絡流量,Crashlytics 將記錄的異常一起批處理並在應用程序下次啟動時發送它們。

啟用選擇加入報告

默認情況下,Crashlytics 會自動為您應用的所有用戶收集崩潰報告。為了讓用戶更好地控制他們發送的數據,您可以通過禁用自動報告並僅在您選擇在代碼中將數據發送到 Crashlytics 來啟用選擇加入報告:

  1. application的塊AndroidManifest.xml文件中添加meta-data標記來關閉自動採集:

    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
    
  2. 通過在運行時調用 Crashlytics 數據收集覆蓋,為選定用戶啟用收集。覆蓋值在您的應用程序啟動期間保持不變,因此 Crashlytics 可以自動收集報告。要選擇自動崩潰報告出來,通過false的倍率值。當設置為false ,新的值並不適用,直到應用程序的下一次運行。

    爪哇

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);

    科特林+KTX

    Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)

管理崩潰洞察數據

Crash Insights 通過將您的匿名堆棧跟踪與來自其他 Firebase 應用的跟踪進行比較,並讓您知道您的問題是否屬於更大趨勢的一部分,從而幫助您解決問題。對於許多問題,Crash Insights 甚至提供資源來幫助您調試崩潰。

Crash Insights 使用匯總的崩潰數據來識別常見的穩定性趨勢。如果您不希望共享您的應用程序的數據,你可以在你的Crashlytics問題列表中的頂部退出從崩潰見解菜單崩潰見解的火力地堡控制台