Crash и ANR

Подключение зависимостей к проекту

В вашем <project>/<app-module>/build.gradle.kts

dependencies { implementation("ru.ok.tracer:tracer-crash-report:0.2.16") }

Также Tracer поддерживает сбор и анализ нативных крэшей. Если вы хотите собирать крэши случившиеся в нативном коде, нужно подключить соответствующую зависимость:

dependencies { implementation("ru.ok.tracer:tracer-crash-report-native:0.2.16") }

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

Более подробное описание зависимостей и как включить загрузку символов из библиотек — на странице Быстрый старт

Описание CrashReportConfiguration и CrashFreeConfiguration

В вашем Application.kt

class MyApplication : Application(), HasTracerConfiguration { override val tracerConfiguration: List<TracerConfiguration> get() = listOf( CrashReportConfiguration.build { // ваши опции }, CrashFreeConfiguration.build { // ваши опции }, ) }

Опции CrashReportConfiguration.Builder:

  • setEnabled — включает/выключает репортинг крэшей. По умолчанию включена, можно не трогать ))
  • setSendAnr — отключает отправку ANR. По умолчанию включена
  • setNativeEnabled — включает/выключает репортинг нативных крэшей. Значение по умолчанию зависит от того, подключена ли зависимость tracer-crash-report-native. Если подключена, то и репортинг по умолчанию включен. Если не подключена - выключен. ⚠ Включить репортинг нативных крэшей без подключения соответствующей зависимости не выйдет, а вот выключить репортинг при наличии зависимости - пожалуйста.

Опции CrashFreeConfiguration.Builder:

  • setEnabled — включает/выключает подсчет crash free users. По умолчанию выключена!

Устаревшие или опасные опции CrashReportConfiguration.Builder:

  • setHost — устарела и будет удалена в версии 0.3.x. Если вам точно действительно надо поменять хост, используйте CoreTracerConfiguration.setHost
  • setSendLogs — устарела и ничего не делает, будет удалена в версии 0.3.x
  • setCountCrashFreeUsers — устарела и ничего не делает, будет удалена в версии 0.3.x. Вместо нее предоставлена опция CrashFreeConfiguration.Builder.setEnabled
  • setSendThreadsDump, setSendAsap, setMaxNonFatalExceptions — устарели и ничего не делают, будут удалены в версии 0.3.x

Устаревшие или опасные опции CrashFreeConfiguration.Builder:

  • setExperimentalMaxSessionsToUpload — сколько сессий нужно накопить чтобы отправить батч. По умолчанию 10. Только для тестов!
  • setExperimentalMaxSessionTimeSpanToUpload — как долго копить сессии чтобы отправить батч. По умолчанию 4 часа (в миллисекундах). Только для тестов!
  • setExperimentalUploadSessionsFromYesterday — отправлять батч если обнаружены вчерашние (или ранее) сессии. По умолчанию включена

Описание TracerCrashReport

Для отправки non-fatals используется метод TracerCrashReport.report(throwable)

// Залоггировать не фатальную ошибку. TracerCrashReport.report(NonFatalException("I'll be ok soon"))

Крэши всегда группируются по общим частям стектрейса. По умолчанию non-fatals тоже, однако есть способ повлиять на эту группировку.
Для того, чтобы все non-fatals попали в одну группу вне зависимости от стектрейса, есть метод report с параметром issueKey.

// Залогировать не фатальную ошибку с ключем ISSUE-001 TracerCrashReport.report(NonFatalException("What a terrible failure"), issueKey = "ISSUE-001")

⚠ ВАЖНО! На текущий момент в трейсере есть лимит в 1млн событий в день. Поэтому рекомендуется не злоупотреблять этим методом.

Также к событию можно добавить дополнительную информацию.