По умолчанию в релизных сборках вашего приложения удаляются библиотеки нативного кода. Это удаление заключается в удалении таблицы символов и отладочной информации, содержащихся в любых нативных библиотеках, используемых вашим приложением. Удаление библиотек нативного кода приводит к значительной экономии места; однако из-за отсутствия информации (такой как имена классов и функций) невозможно диагностировать сбои в консоли Google Play. Для отладки сбоев необходимо добавить файл отладочных символов в ваше приложение в консоли Play.
Загрузите файл символов.
В консоли Google Play сообщается о сбоях нативных приложений в разделе Android Vitals . Выполнив несколько шагов, вы можете сгенерировать и загрузить файл отладочных символов нативных приложений для вашего приложения. Этот файл позволяет отображать символизированные трассировки стека сбоев нативных приложений (включая имена классов и функций) в разделе Android Vitals, что поможет вам отлаживать приложение в рабочей среде. Эти шаги различаются в зависимости от версии плагина Android Gradle, используемого в вашем проекте, и от того, используете ли вы Android App Bundle (рекомендуется) или APK.
Версия плагина Android Gradle 4.1 или более поздняя
Если ваш проект использует сборку Android App Bundle (AAB), вы можете настроить сборку таким образом, чтобы файл отладочных символов автоматически включался в AAB, и он загружался в Play Console при публикации приложения. Чтобы включить этот файл в релизные сборки, добавьте следующее в файл build.gradle.kts вашего приложения:
android.buildTypes.release.ndk.debugSymbolLevel = { SYMBOL_TABLE | FULL }
Выберите уровень отладочных символов из следующих вариантов:
- Используйте
SYMBOL_TABLEдля получения имен функций в символизированных трассировках стека консоли Play. Этот уровень поддерживает «надгробия» . - Используйте
FULL, чтобы получить имена функций, файлы и номера строк в символизированных трассировках стека консоли Play.
Если ваш проект собирает APK-файл, используйте параметр android.buildTypes.release.ndk.debugSymbolLevel , показанный ранее, чтобы сгенерировать файл отладочных символов отдельно. Вручную загрузите файл отладочных символов в Google Play Console (процесс аналогичен загрузке файла сопоставления для деобфускации трассировки стека ). В рамках процесса сборки плагин Android Gradle создаст этот файл в следующем месте проекта:
app/build/outputs/native-debug-symbols/<var>variant-name</var>/native-debug-symbols.zip
Если ваши зависимости содержат нативные библиотеки, отладочная информация, вероятно, удаляется для уменьшения размера. Вы можете проверить это, запустив сборку с уровнем логирования info и установив debugSymbolLevel = { SYMBOL_TABLE | FULL } . Затем найдите следующую строку в выводе сборки:
Unable to extract native debug metadata from ... because the native debug metadata has already been stripped.
Плагин Android Gradle версии 4.0 или более ранней (и другие системы сборки)
В рамках процесса сборки плагин Android Gradle хранит копию необработанных библиотек в каталоге проекта. Структура каталогов выглядит примерно так:
app/build/intermediates/cmake/universal/release/obj/
├── armeabi-v7a/
│ ├── libgameengine.so
│ ├── libothercode.so
│ └── libvideocodec.so
├── arm64-v8a/
│ ├── libgameengine.so
│ ├── libothercode.so
│ └── libvideocodec.so
├── x86/
│ ├── libgameengine.so
│ ├── libothercode.so
│ └── libvideocodec.so
└── x86_64/
├── libgameengine.so
├── libothercode.so
└── libvideocodec.so
Заархивируйте содержимое этой директории:
cd app/build/intermediates/cmake/universal/release/obj zip -r symbols.zip .Загрузите файл
symbols.zipвручную в консоль Google Play.