Tracer - это сервис от OK.Tech для сбора и анализа ошибок в мобильных приложениях под iOS и Android
Для начала нужно:
- Зайти в аккаунт Tracer.
- Создать или вступить в организацию.
- Добавить андроид проект (нужно быть администратором или владельцем организации).
ВАЖНО! При каждом обновлении версии SDK настоятельно рекомендуется делать clean build
.
В вашем <project>/settings.gradle.kts
добавьте репозитории с плагином трейсера и рантаймом трейсера.
pluginManagement {
repositories {
// другие репозитории c вашими зависимостями
maven { setUrl("https://artifactory-external.vkpartner.ru/artifactory/maven/") }
}
}
dependencyResolutionManagement {
repositories {
// другие репозитории c вашими зависимостями
maven { setUrl("https://artifactory-external.vkpartner.ru/artifactory/maven/") }
}
}
В вашем <project>/<app-module>/build.gradle.kts
plugins {
id("ru.ok.tracer").version("1.0.0")
}
tracer {
create("defaultConfig") {
// См. в разделе "Настройки"
pluginToken = "PLUGIN_TOKEN"
appToken = "APP_TOKEN"
// Включает загрузку маппингов для билда. По умолчанию включена
uploadMapping = true
// Включает загрузку отладочной информации из native-библиотек для обработки нативных крешей
// Обрабатывает всё, что попадает в build/intermediates/merged_native_libs
// т.е. модули с NDK-кодом, библиотеки из зависимостей, библиотеки из jniLibs, ...
// Не загружает отладочную информацию для библиотек, у которых нет отладочной информации
//
// Без сборщика нативных крешей включать не очень осмысленно
// По умолчанию выключено
uploadNativeSymbols = true
// Передаёт дополнительный путь с native-библиотеками в загрузчик
// Отладочная информация с библиотек, содержащихся в нем, "перекрывает" ту, что
// собирается из build/intermediates/merged_native_libs
// По умолчанию null
additionalLibrariesPath = projectDir.toString() + "/aVeryNonstandardLibsDirectory"
}
// Также можно задавать конфигурацию для каждого flavor, buildType, buildVariant.
// Конфигурации наследуют defaultConfig.
create("debug") {
// Параметры...
}
create("demoDebug") {
// Параметры...
}
}
dependencies {
implementation(platform("ru.ok.tracer:tracer-platform:1.0.0"))
// Плагины независимы друг от друга. Можно подключать только те,
// которые необходимы в данный момент.
// Сбор и анализ крешей и ANR
implementation("ru.ok.tracer:tracer-crash-report")
// Сбор и анализ нативных крешей
implementation("ru.ok.tracer:tracer-crash-report-native")
// Сбор и анализ хипдапмов при OOM
implementation("ru.ok.tracer:tracer-heap-dumps")
// Анализ потребления дискового места на устройстве
implementation("ru.ok.tracer:tracer-disk-usage")
// Семплирующий профайлер
implementation("ru.ok.tracer:tracer-profiler-sampling")
// Систрейс
implementation("ru.ok.tracer:tracer-profiler-systrace")
}
В вашем Application.kt
реализуйте интерфейс HasTracerConfiguration
class MyApplication : Application(), HasTracerConfiguration {
override val tracerConfiguration: List<TracerConfiguration>
get() = listOf(
CoreTracerConfiguration.build {
// опции ядра трейсера
},
CrashReportConfiguration.build {
// опции сборщика крэшей
},
CrashFreeConfiguration.build {
// опции подсчета crash free
},
HeapDumpConfiguration.build {
// опции сборщика хипдампов при ООМ
},
DiskUsageConfiguration.build {
// опции анализатора дискового пространства
},
SystraceProfilerConfiguration.build {
// опции systrace-профайлера в продакшене
},
SamplingProfilerConfiguration.build {
// опции семплирующего профайлера
},
)
}
Проперти HasTracerConfiguration.tracerConfiguration
будет запрошена ровно один раз при старте процесса до вызова Application.onCreate
, но после Application.attachBaseContext
. В геттере уже можно обращаться к контексту приложения, но еще рано обращаться к тому, что проинициализируется в onCreate
.
В том редком случае, когда вы захотите сконфигурировать ядро трейсера в вашем проекте, нужно вернуть CoreTracerConfiguration
из HasTracerConfiguration
class MyApplication : Application(), HasTracerConfiguration {
override val tracerConfiguration: List<TracerConfiguration>
get() = listOf(
CoreTracerConfiguration.build {
// ваши опции
},
)
}
Опции CoreTracerConfiguration.Builder
:
Опция | Описание |
---|---|
setApiUrl или provideApiUrl |
Изменяет адреса api Tracer-а. Используйте с умом. |
setOverrideAppToken или provideOverrideAppToken |
Переопределяет appToken из конфигурации gradle-плагина. Используйте с умом. |
setDebugUpload |
Отвечает за включение/выключение загрузки данных в дебажной сборке приложения. По умолчанию загрузка данных выключена. |