Разница между базовыми профилями и профилями стартапов.

В этом документе объясняется разница между базовыми профилями и профилями стартапа.

Вы можете использовать плагин Gradle Baseline Profile для автоматического получения удобочитаемых файлов базового профиля, генерируемых тестами BaselineProfileRule . При сборке приложения плагин Android Gradle (AGP) компилирует эти удобочитаемые правила профилирования в бинарный формат, упакованный как baseline.prof в составе Android Package Kit (APK) или Android App Bundle (AAB), который среда выполнения Android (ART) может эффективно использовать для компиляции на устройстве, при условии, что размер бинарного профиля не превышает 1,5 МБ.

Создаваемые файлы профилей обычно называются startup-prof.txt и baseline-prof.txt .

Базовый профиль

Файл базового профиля содержит полный набор правил, которые ART использует для предварительной компиляции часто используемых участков кода, что оптимизирует запуск приложения, уменьшает задержки при взаимодействии и повышает общую производительность во время выполнения.

Файл базового профиля, как правило, представляет собой расширенный набор правил, содержащихся в вашем профиле запуска. Этот файл включает в себя все правила, необходимые для оптимизации запуска приложения (генерируемые с помощью задачи Gradle baselineProfile ), а также дополнительные профили для других важных пользовательских сценариев. Например, прокрутка и навигация по различным экранам.

Эти правила, не связанные с запуском системы, генерируются независимо от значения поля конфигурации includeInStartupProfile . Для получения дополнительной информации см. раздел «Обзор базовых профилей» .

Профиль стартапа

Файл профиля запуска содержит правила, специально оптимизированные для пути запуска вашего приложения. Во время компиляции D8 и R8 используют байт-код Java для создания исполняемых файлов Dalvik (DEX) . И D8, и R8 используют профили запуска для оптимизации структуры DEX-файлов, размещая критически важный код запуска в основном файле .dex для более быстрой загрузки классов. Для достижения наиболее значительного повышения производительности код запуска должен содержаться в этом основном файле .dex . Если совокупный размер кода запуска слишком велик, он переполняет последующие файлы DEX, которые часто содержат несущественные классы и методы, что замедляет запуск.

Хотя профиль запуска предоставляет метаданные, необходимые для оптимизации макета DEX, оптимизация кода в R8 может быть очень эффективной в этом процессе. Удаляя неиспользуемый код и минифицируя байт-код, R8 уменьшает общий объем логики запуска. Это уменьшение повышает вероятность того, что критически важный код останется в основном файле .dex , предотвращая переполнение и обеспечивая более эффективное выполнение в более широком диапазоне версий Android. Как правило, следует устанавливать includeInStartupProfile в true только для тестовых сценариев, необходимых для первоначального отображения приложения.

Для получения более подробной информации см. Обзор профилей стартапов .