Эффективное разрешение проблем с Crash и ANR в Tracer SDK
Подключение зависимостей к проекту
В вашем <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
. Если подключена, то и репортинг по умолчанию включен. Если не подключена — выключен.
Включить репортинг нативных крэшей без подключения соответствующей зависимости не выйдет, но существует возможность выключить репортинг при наличии зависимости.
Ниже представлены устаревшие или опасные опции 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
.
setEnabled
— включает/выключает подсчетcrash free users
. По умолчанию выключена!
Ниже представлены устаревшие или опасные опции 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 млн событий в день. Поэтому рекомендуется не злоупотреблять этим методом.
Также к событию можно добавить дополнительную информацию.