Профили запуска являются подмножеством базовых профилей. Профили запуска используются системой сборки для дальнейшей оптимизации классов и методов, которые они содержат, путем улучшения макета кода в файлах DEX вашего APK. С профилями запуска запуск вашего приложения обычно происходит на 15–30 % быстрее, чем с использованием только базовых профилей.

Требования
Мы рекомендуем использовать профили запуска со следующими инструментами:
- Jetpack Macrobenchmark 1.2.0 или выше
- Плагин Android Gradle 8.2 или выше
- Android Studio Iguana или выше
Кроме того, в вашем приложении необходимы следующие настройки:
- R8 включен. Для вашей сборки релиза установите
isMinifyEnabled = true
. - Включена оптимизация макета DEX. В блоке
baselineProfile {}
файла сборки модуля приложения установитеdexLayoutOptimization = true
.
Создать стартовый профиль
При использовании шаблона Baseline Profile Generator по умолчанию Android Studio создает профиль запуска вместе с базовым профилем.
Общие шаги по созданию и генерации стартового профиля такие же, как и при создании базового профиля .
Стандартный способ создания профиля запуска — использование шаблона модуля Baseline Profile Generator из Android Studio. Он включает взаимодействия при запуске, которые формируют базовый профиль запуска. Чтобы дополнить этот профиль запуска дополнительными критическими пользовательскими путями (CUJ), добавьте CUJ запуска приложения в блок rule
с includeInStartupProfile
, установленным в значение true
. Для простых приложений может быть достаточно запустить MainActivity
приложения. Для более сложных приложений рассмотрите возможность добавления наиболее распространенных точек входа в ваше приложение, таких как запуск приложения с домашнего экрана или запуск в deep link .
Следующий фрагмент кода показывает генератор базового профиля (по умолчанию файл BaselineProfileGenerator.kt
), который включает запуск вашего приложения с домашнего экрана и переход по глубокой ссылке. Глубокая ссылка ведет непосредственно в новостную ленту приложения, а не на домашний экран приложения.
@RunWith(AndroidJUnit4::class)
@LargeTest
class BaselineProfileGenerator {
@get:Rule
val rule = BaselineProfileRule()
@Test
fun generate() {
rule.collect(
packageName = "com.example.app",
includeInStartupProfile = true
) {
// Launch directly into the NEWS_FEED.
startActivityAndWait(Intent().apply {
setPackage(packageName)
setAction("com.example.app.NEWS_FEED")
})
}
}
}
Запустите Генерацию базового профиля для конфигурации приложения и найдите правила профиля запуска в src/<variant>/generated/baselineProfiles/startup-prof.txt
.
Соображения по созданию стартовых профилей
Чтобы решить, какие пользовательские пути следует охватить при создании профиля запуска, подумайте, где большинство пользователей запускают приложение. Обычно это происходит из лаунчера и после того, как они вошли в систему. Это также самый базовый базовый профильный путь.
После того, как первый вариант использования будет рассмотрен, следуйте пользовательской воронке для запуска приложения. Во многих случаях воронки запуска приложения следуют этому списку:
- Основная деятельность пусковой установки
- Уведомления, запускающие запуск приложения
- Дополнительные действия запуска
Проработайте этот список сверху и остановитесь до того, как classes.dex заполнится. Чтобы охватить больше путей, переместите код из пути запуска и добавьте больше путей. Чтобы переместить код из пути запуска, проверьте трассировки Perfetto во время запуска приложения и найдите длительные операции. Вы также можете использовать макробенчмарк с включенной трассировкой методов для автоматизированного и полного просмотра вызовов методов во время запуска приложения.
{% дословно %}Рекомендовано для вас
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- Создать базовые профили {:#creating-profile-rules}
- Базовые профили {:#baseline-profiles}
- Написание микробенчмарка