Оптимизация и обфускация кода с использованием R8 или альтернативных инструментов (таких как оптимизаторы, совместимые с ProGuard, или вторичные постпроцессоры DEX) уменьшают размер DEX-файла вашего приложения, повышают производительность во время выполнения и минимизируют потребление памяти.
DEX-файлы, или исполняемые файлы Dalvik , содержат скомпилированный код, используемый для запуска вашего приложения. Обычно это код на Java и Kotlin, в отличие от скомпилированного кода на C++ или файлов .so .
Оцените локальную оптимизацию кода R8.
Чтобы измерить размер несжатого DEX-файла вашего приложения локально с помощью командной строки, выполните следующую команду:
unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'
Если ваше приложение оптимизировано с помощью R8, вы можете измерить оптимизацию, обфускацию и уменьшение размера пакета приложения, используя анализатор конфигурации R8 . Подробное определение уменьшения размера, оптимизации и обфускации см. в разделе «Использование анализатора конфигурации R8» . Отчет анализатора конфигурации R8 также включен в навык анализа R8 .
Чтобы просмотреть метаданные после оптимизации, встроенные в пакет вашего приложения (для AGP версии 8.10 или выше), извлеките файл r8.json :
unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json
Устраните проблему
Для решения проблемы низких показателей оптимизации кода DEX, ознакомьтесь с рекомендациями, основанными на вашей системе сборки и оптимизаторе:
Плагин Android Gradle и R8
Чтобы улучшить показатели оптимизации кода R8 DEX, ознакомьтесь с рекомендациями в разделе «Улучшение оптимизации R8» . Вы также можете использовать навык R8 Analyzer для получения дополнительных рекомендаций по оптимизации правил сохранения данных в вашем приложении.
Системы сборки, отличные от R8, и постпроцессоры DEX
Если в вашем конвейере сборки используются собственные инструменты сборки или вторичные постпроцессоры DEX, выполните следующие шаги для повышения оптимизации вашего приложения:
- Откройте пакет вашего приложения в Android Studio и просмотрите его в анализаторе APK .
- Выберите все файлы
.dex. - Обратите особое внимание на файлы с наибольшим размером при переключении кнопки «Деобфускация имен» (примечание: для этого необходимо загрузить файл
mapping.txt). Если вы обнаружите, что некоторые из этих файлов остаются большими после обфускации, вероятно, на них влияют правила сохранения данных, действующие на уровне всего пакета. - Найдите в файле
proguard-rules.pro,configuration.txtили аналогичном файле для вашего оптимизатора, если вы не используете R8, правила keep, соответствующие пакетам, которые не обфусцируются. Например, еслиcom.foo.— это большой пакет в вашем dex-файле, найдите правила keep в формате-keep com.foo.**или-keep com.foo.bar.**. - Имейте в виду, что правила сохранения данных пользователями библиотеки могут быть не так просто идентифицировать. Если вы подозреваете, что правило пользователя библиотеки влияет на оптимизацию, вы можете проверить это локально, добавив его в автономное тестовое приложение, использующее последнюю версию AGP, и проверив его с помощью R8 Configuration Analyzer.