Производительность – важный фактор для приложений Wear OS, поскольку у многих устройств Wear OS ресурсы ЦП и графического процессора ограничены по сравнению с более крупными мобильными устройствами. Поскольку в Material 3 Expressive появились более сложные анимации и динамические эффекты, вам следует проверить и улучшить производительность основных рабочих процессов приложения.
Используйте руководство Производительность в Jetpack Compose, чтобы настроить и разработать приложение с оптимальной производительностью. В этом документе описаны некоторые методы, приведенные в руководстве.
Создайте и следуйте стратегиям измерения производительности, чтобы убедиться, что эти методы работают для вашего приложения так, как ожидалось.
Основные методы повышения производительности
Начните с самых эффективных инструментов: профилей базовой конфигурации (включая профили запуска) и оптимизатора кода R8.
Обновите зависимость Compose до версии 1.8 или более поздней. В ней появилось несколько важных функций и повысилась стабильность библиотеки. Инструкции по обновлению приведены в разделе Объявление зависимостей. Чтобы узнать больше, прочитайте запись в блоге о выпуске 1.8 и посмотрите доклад Что нового в Compose на конференции I/O.
Профили базовой конфигурации
Чтобы повысить производительность приложения, используйте профили базовой конфигурации. Объедините классы и методы, которые представляют ключевые рабочие процессы вашего приложения, чтобы система могла предварительно скомпилировать их с помощью базового профиля. Это может сократить время запуска, уменьшить количество зависающих кадров и повысить производительность.
Каждая библиотека Jetpack Compose поставляется с собственными правилами профиля. Если ваше приложение зависит от библиотеки, правила профиля библиотеки автоматически объединяются и распространяются вместе с APK-файлом приложения для предварительной компиляции.
Проверьте базовые профили, используя следующие методы:
- Используйте тесты Macrobenchmark.
- Чтобы проверить состояние конфигурации профиля приложения, используйте специальные команды ADB. Оба метода описаны в руководстве по оценке и проверке эффективности.
Профили запуска
Профили запуска – это подмножество профилей базовой конфигурации, которое дополнительно оптимизирует содержащиеся в них классы и методы, чтобы сократить задержку при запуске приложения.
Добавление профиля запуска увеличит размер APK-файла приложения, поэтому, прежде чем добавлять его в рабочую версию, обязательно оцените компромисс между размером APK-файла и задержкой запуска.
Чтобы начать, прочитайте статью Как создать профиль стартапа.
R8
Используйте компилятор 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.
Если оптимизация происходит при установке, прочитайте раздел Установка базового профиля из неизвестного источника.
UI Automator API
UI Automator API автоматизирует взаимодействия программным способом. Используйте этот API, чтобы оценивать отдельные элементы интерфейса при анализе путей пользователей для потенциальной оптимизации.
Тесты Macrobenchmark
Макротесты производительности проверяют более крупные сценарии использования приложения, особенно запуск и сложные манипуляции с пользовательским интерфейсом. Чтобы начать работу, ознакомьтесь с руководством по внедрению.
Пример использования макротестов для проверки эффективности базовых профилей можно найти в примерах производительности на GitHub.
Библиотека JankStats
Используйте библиотеку JankStats, чтобы отслеживать и анализировать проблемы с производительностью в приложениях.
Пример можно найти в образце JankStats на GitHub.
Трассировка системы
В Material 3 Expressive появились новые типы анимации. Чтобы проверить и диагностировать задержку на потенциально проблемных путях пользователя, используйте функцию Трассировка системы в Android Studio. С помощью этой информации проверьте содержимое базовых профилей и выявите потенциальные неэффективные места в логике кода.
Дополнительные инструменты
Помимо инструментов для повышения эффективности, вы можете использовать другие инструменты для повышения производительности и улучшения рабочего процесса.
Инструменты для повышения продуктивности в Android Studio
В Android Studio есть несколько инструментов, которые помогут вам быстрее находить способы повышения производительности.
Например, с помощью таких инструментов, как Live Edit и Composable Previews, вы можете выявлять элементы интерфейса, которые работают со сбоями, и связанные с ними области в коде приложения, чтобы повысить производительность.
Проведите все финальные тесты производительности на физических устройствах Wear OS, которые точно представляют вашу целевую аудиторию.
Это особенно важно при переходе на Material 3 Expressive, который добавляет в приложение такие функции, как гибкие шрифты и морфинг фигур.
Если вы переходите с представлений, ознакомьтесь с руководством по переносу и рекомендациями по повышению производительности Jetpack Compose, чтобы убедиться, что интерфейсы вашего приложения работают эффективно при использовании Jetpack Compose.
Другие ресурсы
Чтобы быть в курсе последних новостей о производительности Android, ознакомьтесь с разделом Последние новости и видео в руководстве по производительности приложений.