Производительность Jetpack Compose на Wear OS

Производительность на Wear OS — важный фактор для приложений, поскольку многие устройства Wear OS имеют ограниченные ресурсы ЦП и ГП по сравнению с более крупными мобильными устройствами. С появлением более насыщенной анимации и динамических эффектов в Material 3 Expressive вам следует проверить и улучшить производительность ключевых рабочих процессов вашего приложения.

Используйте руководство по оптимизации производительности Jetpack Compose , чтобы настроить и разработать ваше приложение для достижения оптимальной производительности с помощью Jetpack Compose. В этом документе описаны некоторые методы, описанные в этом руководстве.

Разработайте и используйте стратегии измерения производительности, чтобы убедиться, что эти методы работают должным образом для вашего приложения.

Основные методы повышения эффективности работы

Начните с наиболее эффективных типов инструментов для повышения производительности: базовых профилей (включая профили запуска) и оптимизатора кода R8.

Обновите зависимость Compose до версии 1.8 или выше, в которой были добавлены несколько важных новых функций и улучшена общая стабильность библиотеки. Инструкции по обновлению см. в разделе «Объявление зависимостей» . Для получения дополнительной информации прочитайте наш блог о выпуске версии 1.8 и доклад « Что нового в Compose I/O».

Базовые профили

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

Каждая библиотека Jetpack Compose поставляется со своими собственными правилами профилирования. Когда ваше приложение зависит от библиотеки, правила профилирования этой библиотеки автоматически объединяются и распространяются вместе с APK-файлом вашего приложения для предварительной компиляции.

Проверьте свои базовые профили, используя следующие методы:

  • Используйте макротесты.
  • Для проверки состояния конфигурации профиля вашего приложения используйте специальные команды ADB. Пошаговые инструкции для обоих методов описаны в руководстве по измерению и проверке производительности .

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

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

Добавление профиля автозапуска увеличит размер APK-файла вашего приложения, поэтому, прежде чем добавлять его в рабочую версию, обязательно оцените компромисс между размером APK-файла и задержкой при запуске.

Для начала ознакомьтесь с инструкцией по созданию профиля стартапа .

Р8

Используйте компилятор R8 для уменьшения размера и оптимизации приложений. R8 удаляет неиспользуемый код и ресурсы, переписывает код для оптимизации производительности во время выполнения и многое другое.

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

Измерение и проверка производительности

Чтобы узнать об общих стратегиях измерения производительности на Android, см. раздел «Обзор измерения производительности приложений» . В этом разделе описаны некоторые методы, рассмотренные в этой документации.

Выберите вариант сборки для проведения измерений.

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

Для точного понимания производительности вашего приложения запустите его в режиме выпуска .

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

Однако при проведении бенчмарк-тестирования используйте вариант сборки бенчмарка, который имеет ряд ключевых отличий от отладки в релизной версии. Подробности см. в руководстве по настройке Macrobenchmark .

Проверьте базовые профили вашего приложения.

Для начала проверьте состояние своего профиля:

adb shell dumpsys package dexopt | grep -A 1 $PACKAGE_NAME

Если статус не равен status=speed-profile , значит, правила профилирования еще не были применены для оптимизации приложения.

Правила применяются с помощью фоновой задачи, которая выполняется, когда устройство заряжено и находится в режиме ожидания. Чтобы запустить её вручную, выполните следующую команду после запуска приложения и истечения достаточного времени для загрузки профиля установщиком в фоновом режиме. Этот процесс обычно занимает около 40 секунд.

adb shell cmd package bg-dexopt-job

Затем повторно выполните предыдущую команду, чтобы убедиться, что статус — speed-profile .

В случаях, когда оптимизация происходит во время установки, см. раздел «Загрузка базового профиля извне» .

API UI Automator

API UI Automator автоматизирует взаимодействия программным способом. Используйте этот API для оценки производительности отдельных элементов пользовательского интерфейса при анализе пользовательских сценариев на предмет потенциальных оптимизаций.

Тесты Macrobenchmark

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

Пример использования макротестов для проверки производительности базовых профилей можно найти в примерах производительности на GitHub.

Библиотека JankStats

Используйте библиотеку JankStats для отслеживания и анализа проблем с производительностью в приложениях.

В качестве примера см. образец JankStats на GitHub.

Трассировка системы

Благодаря новым типам анимации, представленным в Material 3 Expressive, используйте функцию System Trace в Android Studio для проверки и диагностики задержек в потенциально проблемных сценариях взаимодействия с пользователем. Используя эту информацию, проверьте содержимое ваших базовых профилей и выявите потенциальные неэффективности в логике вашего кода.

Дополнительные инструменты

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

Инструменты повышения производительности в Android Studio

Android Studio предоставляет несколько инструментов, которые могут сократить время, затрачиваемое на поиск путей повышения производительности.

Например, используя такие инструменты, как Live Edit и Composable Previews , вы можете выявить проблемные элементы пользовательского интерфейса, а также связанные с ними области в коде вашего приложения, для повышения производительности.

Проведите все заключительные тесты производительности на наборе физических устройств Wear OS , которые точно отражают вашу целевую пользовательскую базу.

Это особенно важно при переходе на Material 3 Expressive, который добавляет в ваше приложение такие функции, как гибкие шрифты и изменение формы элементов.

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

Другие ресурсы

Чтобы быть в курсе последних новостей и видео о производительности приложений Android, ознакомьтесь с разделом «Последние новости и видео» в руководстве по производительности приложений.