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

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

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

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

  • В приборной панели Crashlytics , вы можете осуществлять поиск по вопросам , которые соответствуют пользовательскому ключу.

  • Когда вы рассмотрение вопроса в консоли, вы можете просматривать связанные собственные ключи для каждого события (клавиши подвкладка) и даже фильтровать события по пользовательским кнопкам (меню Filter в верхней части страницы).

Используйте setCustomKey метод экземпляра , чтобы установить пар ключ / значение. Обратите внимание , что setCustomKey перегружен для value параметра , чтобы принять любой примитивный или String аргумент. Вот некоторые примеры:

Джава

// 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);

Котлин + KTX

// 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);

Котлин + KTX

FirebaseCrashlytics.getInstance().setCustomKey("int_key", 50)

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

Добавить пары ключ / значение в объеме путем передачи экземпляра CustomKeysAndValues к 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);

Котлин + 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 на Firebase консоли , на вкладке Logs.

Используйте 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.
}

Все записанные исключения отображаются в консоли 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 использует агрегированные данные о сбоях для определения общих тенденций стабильности. Если вы не хотите делиться данные приложения, вы можете отказаться от Крушения Insights из меню Краш Insights в верхней части списка проблем Crashlytics в консоли Firebase .