Крэш-плагин
Это архивная версия документации. Актуальная документация по всем платформам находится здесь.
AppMetrica позволяет собирать информацию о нативных и java-крэшах. Их можно анализировать в отчете Крэши. См. также раздел Крэши/ошибки.
Чтобы уменьшить размер приложения, код оптимизируют во время релизной сборки.
Если во время сборки Android-приложения сжимали и обфусцировали код, то информация о крэшах передается в обфусцированном виде. Чтобы извлечь данные для анализа из таких крэш-логов, AppMetrica выполняет деобфускацию на стороне сервера.
Для этого загрузите mapping-файлы или отладочные символы SO-файлов в AppMetrica: автоматически при сборке приложения или вручную через веб-интерфейс.
Чтобы отправлять файлы, подключите AppMetrica Build Plugin.
Подключение плагина
Чтобы подключить плагин:
- Добавьте в корневой файл build.gradle зависимость:
buildscript { ... dependencies { ... classpath 'com.yandex.android:appmetrica-build-plugin:0.7.0' } }
Скопировано - Добавьте в файл app/build.gradle:
... apply plugin: 'appmetrica-plugin' appmetrica { postApiKey = { applicationVariant -> "Post Api key for variant" } // or postApiKey = "Post Api key" enable = { applicationVariant -> true } // Optional. mappingBuildTypes = ['release'] // Optional. offline = false // Optional. mappingFile = { applicationVariant -> null } // Optional. enableAnalytics = true // Optional. ndk { // Optional. enable = { applicationVariant -> false } soFiles = { applicationVariant -> listOfSoFiles } // Optional. additionalSoFiles = { applicationVariant -> listOfSoFiles } // Optional. addNdkCrashesDependency = { applicationVariant -> true } // Optional. } } ...
СкопированоpostApiKey
*Post API key или лямбда-функция, которая возвращает Post API key дляApplicationVariant
. Подробнее проApplicationVariant
в документации Android и Javadoc.Post API key можно получить в разделе Настройки в AppMetrica. Он используется для идентификации вашего приложения.
Если
offline = true
, то параметр не является обязательным.enable
Лямбда-функция, которая принимаетApplicationVariant
и возвращает, надо ли использовать плагин для этого варианта сборки.Если плагин не используется,
apk
не меняется и mapping-файл не загружается.По умолчанию возвращает
true
только дляbuildType = 'release'
.Примечание. Для указания типов сборок используйте один из параметров:enable
илиmappingBuildTypes
.mappingBuildTypes
Список типов сборокbuildType
, для которых будет отправляться mapping-файл.Значение по умолчанию:
['release']
.Чтобы отключить загрузку mapping-файлов для определенного типа сборки, удалите из списка нужный
buildType
.Примечание. Для указания типов сборок используйте один из параметров:enable
илиmappingBuildTypes
.offline
Включает режим
offline
.Boolean
или лямбда-функция, которая принимаетApplicationVariant
.Допустимые значения:
true
— не загружает файл в AppMetrica. Если включен, после сборки выводит путь до архива в лог. Его можно загрузить вручную через веб-интерфейс.false
— автоматически загружает mapping-файл.
Значение по умолчанию:
false
.mappingFile
Лямбда-функция, которая принимает
Значение по умолчанию:ApplicationVariant
и возвращает mapping, который надо загрузить. Если лямбда возвращаетnull
, используется значение по умолчанию.ApplicationVariant.mappingFileProvider
.enableAnalytics
Включает отправку статистики об использовании плагина в AppMetrica.
Boolean
.Допустимые значения:
true
— отправка статистики включена.false
— отправка статистики выключена.
Значение по умолчанию:
true
.ndk
Параметр необходим для загрузки символов из SO-файла, чтобы отслеживать нативные крэши.
enable
Лямбда-функция, которая принимает
Значение по умолчанию:ApplicationVariant
и возвращает, надо ли загружать символы из SO-файлов для этого варианта сборки.false
.soFiles
Лямбда-функция, которая принимает
ApplicationVariant
и возвращает список SO-файлов.По умолчанию плагин ищет SO-файлы в папках проекта Android Studio.
Необходимо переопределить, если ваши SO-файлы лежат в необычном месте или если плагин не может их найти.
additionalSoFiles
Лямбда-функция, которая принимает
ApplicationVariant
и возвращает список дополнительных SO-файлов, символы которых необходимо загрузить.addNdkCrashesDependency
Лямбда-функция, которая принимает
Значение по умолчанию:ApplicationVariant
и возвращает, надо ли добавлять зависимость отmobmetricalib-ndk-crashes
.true
.* Обязательный параметр
- Если параметр
ndk
включен, то для отправки отладочных символов используется задача Gradleupload${variant.name.capitalize()}Symbols.
Чтобы вызывать задачу автоматически, можно добавить в файл app/build.gradle следующий код:... afterEvaluate { android.applicationVariants.forEach { variant -> def uploadSymbolsTask = project.tasks.named("upload${variant.name.capitalize()}Symbols") if (uploadSymbolsTask != null) { variant.assembleProvider.get()?.finalizedBy(uploadSymbolsTask) // Если используете apk project.tasks.named("bundle${variant.name.capitalize()}").get()?.finalizedBy(uploadSymbolsTask) // Если используете aab } } } ...
Скопировано
Ручная загрузка
Для ручной загрузки нужно подключить и использовать плагин с режимом offline
. Это необходимо для связывания mapping-файла со сборкой приложения.
- В файле app/build.gradle включите режим
offline
и запустите сборку.appmetrica { ... offline = true }
Скопированоoffline
Включает режим offline. Допустимые значения:true
— не загружает mapping-файл в AppMetrica. Если включен, после сборки выводит путь до архива в лог.false
— автоматически загружает mapping-файл.
Значение по умолчанию:
false
. - В интерфейсе AppMetrica перейдите в настройки приложения из меню слева.
- Откройте вкладку.
- Нажмите кнопку Выберите файл и загрузите Zip-архив.
Ошибки при сборке
Возможные ошибки при сборке:
IllegalStateException
— включите обфускацию кода с помощью ProGuard или R8 Compiler;HttpResponseException
— проверьте подключение к интернету.
При возникновении других ошибок обращайтесь в техническую поддержку.
История изменений
Версия 0.7.0
Релиз 19 апреля 2023 г.
- Дополнена ошибка об отсутствии mapping файлов.
- Добавлена поддержка AGP до версии 7.4.+ и gradle до 7.5.
Версия 0.6.2
Релиз 28 июля 2022 г.
- Улучшена работа плагина.
Версия 0.6.1
Релиз 20 мая 2022 г.
- Улучшена работа плагина.
Версия 0.6.0
Релиз 17 мая 2022 г.
- Добавлен параметр mappingFile.
- Исправлена ошибка Cannot query the value of this property because it has no value available при получении mapping файла.
Версия 0.5.0
Релиз 21 апреля 2022 г.
- Исправлено падение IndexOutOfBoundsException: toIndex (16) is greater than size (8) при обработке SO-файла.
- Исправлено падение при использовании флага Cannot query the value of this property because it has no value available.
- Добавлен флаг ndk.addNdkCrashesDependency.
Версия 0.3.0
Релиз 17 июня 2021 г.
- Добавлена поддержка gradle 7.
- Добавлена отправка аналитики.
Версия 0.2.4
Релиз 26 мая 2021 г.
- Добавлена поддержка AGP 4.2.0.
- Улучшена производительность и стабильность работы плагина.
Версия 0.2.2
Релиз 19 февраля 2021 г.
- Исправлена ошибка
Connection timed out
во время загрузки mapping-файлов или символов при использовании прокси.
Версия 0.2.1
Релиз 3 ноября 2020 г.
- Добавлена поддержка Android App Bundle.Внимание. Не запускайте сборку
apk
иaab
одной gradle-командой. Это может привести к ошибке при обработке крэшей. - Добавлено логирование.
- Улучшен поиск и парсинг SO-файлов.
Версия 0.1.3
Релиз 12 июня 2020 г.
- Добавлена автоматическая загрузка символов из SO-файлов для отслеживания нативных крэшей.
- В файл info.txt добавлено поле
split_version_codes
, в котором хранятся все загруженныеversion_code
приложения.
Версия 0.1.2
Релиз 13 марта 2020 г.
- Исправлено падение во время конфигурации, если не указан Post API key. Теперь он проверяется во время выполнения загрузки.
- Исправлен способ получения mapping-файлов.
- Добавлена информация об ошибке при загрузке mapping-файлов.
- Добавлена возможность указывать для разных
ApplicationVariant
свои значения параметров плагина.
Версия 0.0.1
Релиз 8 октября 2019 г.