Подключение Крашлитики для Android
Краткое содержание
Версия 0.3.0
Для передачи ошибок в МТС Аналитику через сервис «Крашлитика» необходимо связать Stack Trace с маппинг-файлом. Это требует установки плагина.
Основные шаги:
- Подключить и инициализировать SDK Аналитики, включив отлов крэшей.
- Установить плагин Крашлитики.
- Создать маппинг-файл на этапе сборки.
- Присвоить сборке уникальный ID, добавив его в маппинг и константы приложения.
- Выложить сборку с ID в маркет.
- Отправлять события ошибок с тем же ID через SDK.
- Загрузить маппинг в Крашлитику для анализа.
Требования:
- Android, Kotlin.
- AGP версия 8.1.0 и выше.
- SDK МТС Аналитики.
Подключение плагина:
- Для Groovy: добавить зависимости в
settings.gradle,build.gradle, настроить плагин и синхронизировать проект. - Для Kotlin DSL: аналогично, но с использованием
.ktsфайлов.
Конфигурация плагина:
- Включить отладочные логи через
gradle.properties. - Настроить параметры:
flowId,clientId,clientSecret, прокси, количество попыток загрузки и т.д.
Генерация файла:
- После сборки с
minifyEnabled trueсоздаетсяmapping.zipв папкеbuild/tmp/mtsa/mapping/variantName. - Файл содержит ID сборки для сопоставления с ошибками.
Загрузка файла в Крашлитику:
- Автоматически: включить
allowUploadMappingFiles=trueи настроить учетные данные. - Вручную: загрузить
mapping.zipчерез интерфейс Крашлитики.
Смотреть данные:
Статистика доступна в отчете «Крашлитика» на платформе МТС Аналитики.
Версия 0.3.0
Информацию об ошибках в приложении можно передавать в МТС Аналитику, в сервис «Крашлитика».
Для расшифровки Stack Trace ошибок, переданных в Аналитику, важно связать их с маппинг-файлом. Для этого необходимо установить плагин.
- SDK Аналитики подключен к проекту, проинициализирован, включен перехват крэшей (фатальных ошибок).
- Плагин Крашлитики подключен к проекту.
- На этапе сборки приложения создаётся маппинг-файл.
- Плагин присваивает сборке уникальный идентификатор, добавляя его в маппинг и в константы приложения.
- Разработчик выкладывает сборку с таким ID в маркет.
- SDK Аналитики начинает отправлять события ошибок с тем же ID сборки.
- Разработчик загружает в Крашлитику маппинг, который содержит ID сборки.
- МТС Аналитика сопоставляет маппинг с ошибками по номеру сборки для дальнейшего анализа в отчёте.
Требования
- Android, Kotlin
- AGP version to 8.1.0 +
- SDK МТС Аналитики
Чтобы события отправлялись в Аналитику, подключите и проинициализируйте SDK Аналитики. Включите отлов крэшей setCrashReportingEnabled(true)
val mtsAnalytics: ru.mts.analytics.sdk.publicapi.api.MtsAnalyticsApi =
ru.mts.analytics.sdk.publicapi.MTSAnalytics.getInstance(
context = this,
config = MtsAnalyticsConfig.Builder(flowId = "aabb1111-2c2d-3e3f-4444-555566667777")
.setCrashReportingEnabled(true)
.build()
)
Если вы не получили ID потока, отправьте письмо на analytics.support@mts.ru с темой «Получение Flow ID». Идентификатор нужен для отправки данных с вашего ресурса в МТС Аналитику.
Подключение плагина
- Groovy
- Kotlin DSL
- В
settings.gradleдобавьте зависимость наartifactory
pluginManagement {
repositories {
maven {
name "mts_analytics_plugins_dev"
url "https://artifacts.services.mts.ru/repository/maven-public-mtsm-maven-local/"
content {
includeGroupAndSubgroups("ru.mts.analytics")
}
}
}
}
- В
build.gradleдобавьте
buildscript {
dependencies {
classpath("ru.mts.analytics:android-plugin-mapping:0.3.0")
}
}
- В
build.gradleмодуля, к которому подключается зависимость, в заголовок файла, блокapply plugins, добавьте
plugins {
id 'ru.mts.analytics.android-plugin-mapping'
}
Ниже в том же файле вызовите plugin extension mtsaPluginMapping и укажите значения параметров
mtsaPluginMapping {
flowId = "aabb1111-2c2d-3e3f-4444-555566667777"
clientId = "ccdd3333-d4e4-5566-d7e7-88889999ffff"
clientSecret = "0AaBb1CcDEeXYzXyzXYz12BbCc"
proxyHost = "ci.proxy.company.ru"
proxyPort = 1234
proxyUser = techUserProxyLogin
proxyPassword = techUserProxyPassword
allowUploadMappingFiles = true
onlyReleaseEnabled = true
}
В примере выше flowId, clientId и clientSecret и параметры прокси - выдуманные. Используйте свои реальные значения.
- Синхронизируйте проект.
- В
settings.gradle.ktsдобавьте зависимость наartifactory
pluginManagement {
repositories {
maven {
name = "mts_analytics_plugins_dev"
url = uri("https://artifactory.mts.ru/artifactory/maven-public-mtsm-maven-local/")
content {
includeGroupAndSubgroups("ru.mts.analytics")
}
}
}
}
- В
build.gradle.kts, в заголовок файла, блокbuildscriptдобавьте
buildscript {
dependencies {
classpath("ru.mts.analytics:android-plugin-mapping:0.3.0")
}
}
- В
build.gradle.ktsмодуля, к которому подключается зависимость, добавьте в заголовок файла, верхними строчками выше блокаapply plugins
import ru.mts.analytics.gradle.MtsaPluginMappingExtension
В заголовок файла, под импортами, блок apply plugins
plugins {
id("ru.mts.analytics.android-plugin-mapping")
}
Ниже в том же файле вызовите plugin extension mtsaPluginMapping и укажите значения параметров
configure<MtsaPluginMappingExtension> {
flowId = "aabb1111-2c2d-3e3f-4444-555566667777"
clientId = "ccdd3333-d4e4-5566-d7e7-88889999ffff"
clientSecret = "0AaBb1CcDEeXYzXyzXYz12BbCc"
proxyHost = "ci.proxy.company.ru"
proxyPort = 1234
proxyUser = techUserProxyLogin
proxyPassword = techUserProxyPassword
allowUploadMappingFiles = true
onlyReleaseEnabled = true
}
В примере выше flowId, clientId и clientSecret и параметры прокси - выдуманные. Используйте свои реальные значения.
- Синхронизируйте проект.
Конфигурация плагина
Чтобы включить отладочный лог работы плагина, добавьте в gradle.properties файл модуля :app свойство: ma_debug_logging_is_enabled=true.
Чтобы изменить конфигурацию по умолчанию, в build.gradle файле модуля, к которому подключается плагин, вызовите plugin extension mtsaPluginMapping и укажите нужные значения параметров. Например, в модуле :app
mtsaPluginMapping {
flowId = "aabb1111-2c2d-3e3f-4444-555566667777"
clientId = "ccdd3333-d4e4-5566-d7e7-88889999ffff"
clientSecret = "0AaBb1CcDEeXYzXyzXYz12BbCc"
proxyHost = "ci.proxy.company.ru"
proxyPort = 1234
proxyUser = techUserProxyLogin
proxyPassword = techUserProxyPassword
allowUploadMappingFiles = true
uploadTryCount = 2
showUploadingProgress = true
onlyReleaseEnabled = true
}
В примере выше flowId, clientId и clientSecret и параметры прокси - выдуманные. Используйте свои реальные значения.
Доступные параметры
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
allowUploadMappingFiles: Boolean | Запускает gradle tasks автоматической загрузки mapping.zip на сервис аналитики | false |
flowId: String? | Идентификатор потока в МТС Аналитике, тот же, что и для СДК Аналитики. Необходимо указать, если включена автоматическая отправка маппинг файла | - |
clientId: String? | Логин вашей учётной записи для аутентификации в сервисе. Необходимо указать, если включена автоматическая отправка маппинг файла | - |
clientSecret: String? | Пароль вашей учётной записи для аутентификации в сервисе. Необходимо указать, если включена автоматическая отправка маппинг файла | - |
proxyHost: String?, proxyPort: Int? | Параметры прокси-сервера, если доступ во внешний интернет закрыт настройками прокси | - |
proxyUser: String?, proxyPassword: String? | Параметры учётной записи для отправки маппинг файла через прокси | - |
uploadTryCount: Int | Количество попыток отправить mapping-file в случае возникновения ошибок сети. Минимум 1, максимум 3 попытки | 1 |
showUploadingProgress: Boolean | Разрешает вывод прогресса загрузки файла в logcat Android Studio | false |
onlyReleaseEnabled: Boolean | Запускает gradle tasks и записывает ID сборки только для релизного варианта с build type = release | true |
allowDependenciesReport: Boolean | Создаёт файл с о списком сторонних зависимостей проекта во временной папке app/build/*. В настоящий момент фича отключена | false |
ignoredBuildTypes: Set<String> | Используйте, чтобы передавать типы сборки, для которых не будет создаваться ID сборки | emptySet() |
ignoredFlavors: Set<String> | Используйте, чтобы передавать build-flavor dimensions, для которых не будет создаваться ID сборки | emptySet() |
ignoredVariants: Set<String> | Используйте, чтобы передавать имена вариантов или готовых сочетаний Flavors*BuildType, для которых не будет создаваться ID сборки | emptySet() |
Генерация файла
После подключения плагина и выполнения gradle tasks build* или assemble* для build-вариантов с включённой минификацией minifyEnabled true / isMinifyEnabled = true появится файл mapping.zip.
Где будет файл: в Application-модуле, к которому подключён плагин.
build/tmp/mtsa/mapping/variantName/mapping.zip
Плагин допишет в конец этого файла строку с ID сборки, например, ma_mfid=b556d760-2031-49be-a14e-945f6d25a36d.
События фатальных ошибок, отловленные SDK МТС Аналитики, будут отправляться в Аналитику и включать в себя stacktrace ошибки и такой же mfid. Так, сервис крашлитики будет понимать, ошибкам какой версии приложения соответствует загруженный mapping.zip.
Загрузка файла в Крашлитику
Автоматически
-
В конфигурации плагина включите автоматическую отправку маппинг-файлов
allowUploadMappingFiles=true. -
Настройте параметры учётной записи:
flowId,clientId,clientSecret.
После этого маппинг-файл будет отправляться автоматически во время сборки проекта.
Вручную
-
В конфигурации плагина выключите автоматическую отправку маппинг-файлов
allowUploadMappingFiles=false(по умолчанию). Настраивать параметры учётной записиflowId,clientId,clientSecretне обязательно. -
После завершения сборки
.apkдля релизных или других сборок возьмите полученныйmapping.zipфайл и вручную загрузите его в Крашлитику.
Смотреть данные
Статистика будет отображаться в отчёте «Крашлитика».