Профили запуска – это подмножество профилей базовой конфигурации. Профили запуска используются системой сборки для дальнейшей оптимизации классов и методов, которые они содержат, за счет улучшения макета кода в DEX-файлах APK. При использовании профилей запуска приложение обычно запускается на 15–30 % быстрее, чем при использовании только профилей базовой конфигурации.
Подробнее о профилях запуска…
Требования
Рекомендуем использовать профили запуска со следующими инструментами:
- Jetpack Macrobenchmark 1.2.0 или более поздней версии;
- Плагин Android Gradle (AGP) 8.2 или более поздней версии.
- Android Studio Iguana или более поздней версии;
Кроме того, в приложении должны быть заданы следующие настройки:
- Включен R8. Для конечной сборки задайте значение
isMinifyEnabled = true. - Оптимизация макета DEX включена. Эта функция доступна только в AGP 8.1 и более поздних версиях и включена по умолчанию в AGP 8.3 и более поздних версиях. Для AGP версий 8.1–8.2 в блоке
baselineProfile {}файла сборки модуля приложения задайтеdexLayoutOptimization = true.
Создайте профиль стартапа
Android Studio создает профиль запуска вместе с профилем базовой конфигурации, когда вы используете шаблон генератора профиля базовой конфигурации по умолчанию.
Общие шаги по созданию и генерации профиля запуска такие же, как и для создания базового профиля.
По умолчанию профиль запуска создается с помощью шаблона модуля генератора базового профиля в Android Studio. Это включает в себя взаимодействия со стартапами, которые формируют базовый профиль стартапа. Чтобы добавить в профиль запуска больше алгоритмов достижения цели, добавьте их в блок 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 for app (Создать базовый профиль для приложения) и найдите правила профиля запуска в каталоге src/<variant>/generated/baselineProfiles/startup-prof.txt, где они автоматически используются AGP.
Что нужно учитывать при создании профилей запуска
Чтобы решить, какие пути пользователя следует охватить при создании профиля запуска, подумайте, с чего большинство пользователей начинают работу с приложением. Обычно это происходит на панели запуска и после входа в систему. Это также самый базовый путь профиля.
После того как вы рассмотрели первый вариант использования, перейдите к воронке запуска приложения. Во многих случаях воронки запуска приложений выглядят следующим образом:
- Основное действие в панели запуска
- Уведомления, которые запускают приложение
- Дополнительные действия в панели запуска
Выполняйте действия из списка сверху вниз, пока не заполните classes.dex. Чтобы охватить больше путей, переместите код из пути запуска и добавьте больше путей. Чтобы переместить код из пути запуска, изучите трассировки Perfetto во время запуска приложения и найдите длительные операции. Вы также можете использовать макротест с включенной трассировкой методов, чтобы получить полную картину вызовов методов во время запуска приложения.
Рекомендуем
- Примечание. Текст ссылки показывается, когда JavaScript отключен.
- Как создать профиль базовой конфигурации {:#creating-profile-rules}
- Профили базовой конфигурации {:#baseline-profiles}
- Как написать микротест