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

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