Эффективное разрешение проблем с 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 млн событий в день. Поэтому рекомендуется не злоупотреблять этим методом.
Также к событию можно добавить дополнительную информацию.