Crash и ANR
Подключение зависимостей к проекту
В вашем <project>/<app-module>/build.gradle
dependencies { implementation "ru.ok.tracer:tracer-crash-report:0.2.7" } |
Также Tracer поддерживает сбор и анализ нативных крэшей. Если вы хотите собирать крэши случившиеся в нативном коде, нужно подключить соответствующую зависимость:
dependencies { implementation "ru.ok.tracer:tracer-crash-report-native:0.2.7" } |
На данный момент эта фича находится в активной разработке. Сбор уже работает, однако отображаются все нативные крэши пока без стэктрейса и прочих подробностей. Собрать и подсчитать их можно уже сейчас, а отображение и классификация дорабатываются.
Более подробное описание зависимостей — на странице «Быстрый старт».
Описание 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.xsetCountCrashFreeUsers
— устарела и ничего не делает, будет удалена в версии 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") |
На текущий момент в Tracer есть лимит в 1 млн событий в день. Поэтому рекомендуется не злоупотреблять этим методом.
Также к событию можно добавить дополнительную информацию.