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

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

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

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

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

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

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

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

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

Котлин + KTX

Firebase.crashlytics.log("message")

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

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

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

Джава

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

Котлин + KTX

Firebase.crashlytics.setUserId("user123456789")

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

(Только Android NDK) Добавляйте метаданные отчетов о сбоях NDK

Вы необязательно может включать в себя crashlytics.h заголовок в вашем C ++ код для добавления метаданных отчетов о сбоях НДК, таких как пользовательские ключи , пользовательские журналы , идентификаторы пользователей . Все эти варианты описаны на этой странице выше.

crashlytics.h доступен в качестве заголовка-только C ++ библиотеки в Firebase Android SDK GitHub Repository .

Прочтите комментарии в файле заголовка для получения инструкций по использованию API-интерфейсов NDK C ++.

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

Помимо автоматического сообщения о сбоях вашего приложения, 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

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

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