Google 致力于为黑人社区推动种族平等。查看具体举措
Эта страница переведена с помощью Cloud Translation API.
Switch to English

Настройте отчеты о сбоях Firebase Crashlytics

В этом руководстве описывается, как настроить отчеты о сбоях с помощью Firebase Crashlytics SDK. По умолчанию Crashlytics автоматически собирает отчеты о сбоях для всех пользователей вашего приложения (вместо этого вы можете отключить автоматические отчеты о сбоях и включить отчеты по подписке для своих пользователей). Crashlytics предоставляет четыре механизма ведения журнала из коробки: настраиваемые ключи , настраиваемые журналы , идентификаторы пользователей и перехваченные исключения .

Добавить собственные ключи

Пользовательские ключи помогают узнать конкретное состояние вашего приложения, ведущее к сбою. Вы можете связать произвольные пары ключ / значение со своими отчетами о сбоях и просмотреть их в консоли Firebase .

Используйте setCustomKey экземпляра setCustomKey для установки пар ключ / значение:

Ява

setCustomKey перегружен, чтобы параметр value мог принимать любой примитивный или строковый аргумент. Например:

// Set a key to a string.
FirebaseCrashlytics.getInstance().setCustomKey("str_key", "hello");

// Set a key to a boolean.
FirebaseCrashlytics.getInstance().setCustomKey("bool_key", true);

// Set a key to an int.
FirebaseCrashlytics.getInstance().setCustomKey("int_key", 1);

// Set a key to a long.
FirebaseCrashlytics.getInstance().setCustomKey("int_key", 1L);

// Set a key to a float.
FirebaseCrashlytics.getInstance().setCustomKey("float_key", 1.0f);

// Set a key to a double.
FirebaseCrashlytics.getInstance().setCustomKey("double_key", 1.0);
Котлин
// Set a key to a string.
FirebaseCrashlytics.getInstance().setCustomKey("str_key", "hello")

// Set a key to a boolean.
FirebaseCrashlytics.getInstance().setCustomKey("bool_key", true)

// Set a key to an int.
FirebaseCrashlytics.getInstance().setCustomKey("int_key", 1)

// Set a key to an long.
FirebaseCrashlytics.getInstance().setCustomKey("int_key", 1L)

// Set a key to a float.
FirebaseCrashlytics.getInstance().setCustomKey("float_key", 1.0f)

// Set a key to a double.
FirebaseCrashlytics.getInstance().setCustomKey("double_key", 1.0)

Вы также можете изменить значение существующего ключа, вызвав ключ и установив для него другое значение. Например:

Ява
FirebaseCrashlytics.getInstance().setCustomKey("int_key", 50);

// Set int_key from 50 to 100.
FirebaseCrashlytics.getInstance().setCustomKey("int_key", 100);
Котлин
FirebaseCrashlytics.getInstance().setCustomKey("int_key", 50)

// Set int_key from 50 to 100.
FirebaseCrashlytics.getInstance().setCustomKey("int_key", 100)

CustomKeysAndValues setCustomKeys пары ключ / значение, передав экземпляр CustomKeysAndValues setCustomKeys экземпляра setCustomKeys :

Ява
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);
Котлин

Для Kotlin существующая функциональность проще, чем использование CustomKeysAndValues Builder:

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 консоли Firebase на вкладке « Журналы ».

Используйте log чтобы выявить проблемы. Например:

Ява

FirebaseCrashlytics.getInstance().log("Higgs-Boson detected! Bailing out");

Котлин + KTX

FirebaseCrashlytics.getInstance().log("Higgs-Boson detected! Bailing out")

Установить идентификаторы пользователей

Чтобы диагностировать проблему, часто бывает полезно знать, у кого из ваших пользователей произошел сбой. Crashlytics включает способ анонимной идентификации пользователей в ваших отчетах о сбоях.

Чтобы добавить идентификаторы пользователей в отчеты, назначьте каждому пользователю уникальный идентификатор в виде идентификационного номера, токена или хешированного значения:

Ява

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

Котлин + KTX

FirebaseCrashlytics.getInstance().setUserId("12345")

Если вам когда-нибудь понадобится очистить идентификатор пользователя после его установки, сбросьте значение на пустую строку. Очистка идентификатора пользователя не удаляет существующие записи Crashlytics. Если вам нужно удалить записи, связанные с идентификатором пользователя, обратитесь в службу поддержки Firebase.

Сообщать о некритических исключениях

Помимо автоматического сообщения о сбоях вашего приложения, Crashlytics позволяет вам записывать нефатальные исключения и отправлять их вам при следующем запуске вашего приложения.

Используйте метод recordException для записи нефатальных исключений в блоки catch вашего приложения. Например:

Ява

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

Котлин + KTX

try {
    methodThatThrows()
} catch (e: Exception) {
    FirebaseCrashlytics.getInstance().recordException(e)
    // ...handle the exception.
}
Предупреждение. Если вы хотите включить уникальное значение (например, идентификатор пользователя или временную метку) в сообщение об исключении, используйте настраиваемый ключ вместо добавления значения непосредственно в сообщение об исключении. Прямое добавление значений может привести к нескольким проблемам и может привести к тому, что Crashlytics ограничит количество ошибок в отчетах в вашем приложении.

Все записанные исключения отображаются в консоли 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

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true)

Управление данными Crash Insights

Crash Insights помогает решать проблемы, сравнивая анонимные трассировки стека с трассировками из других приложений Firebase и сообщая вам, является ли ваша проблема частью более широкой тенденции. По многим вопросам Crash Insights даже предоставляет ресурсы, которые помогут вам отладить сбой.

Crash Insights использует агрегированные данные о сбоях для определения общих тенденций стабильности. Если вы предпочитаете не делиться данными своего приложения, вы можете отказаться от Crash Insights в меню Crash Insights в верхней части списка проблем Crashlytics в консоли Firebase .