Connect with us

Разработка

Что нового в Jetpack Compose

На Google I/O 2025  объявили о множестве обновлений функций, производительности, стабильности, библиотек и инструментов для Jetpack Compose, рекомендуемого инструментария для создания пользовательских интерфейсов для Android.

Опубликовано

/

     
     

На Google I/O 2025  объявили о множестве обновлений функций, производительности, стабильности, библиотек и инструментов для Jetpack Compose, рекомендуемого инструментария для создания пользовательских интерфейсов для Android. С помощью Compose вы сможете создавать отличные приложения, которые будут работать на всех устройствах. С момента своего первого анонса (на Google I/O 2019!) Compose значительно усовершенствовался, и сейчас 60% из 1000 лучших приложений в Play Store, таких как MAX и Google Drive, используют и любят его.

Что нового в Jetpack Compose

Новые фичи

С момента I/O в прошлом году, Compose Bill of Materials (BOM) версии 2025.05.01 добавил новые функции, такие как:

  • Поддержка автозаполнения, позволяющая пользователям автоматически вставлять ранее введенную персональную информацию в текстовые поля.
  • Автоподбор размера текста для плавной адаптации размера текста к размеру родительского контейнера.
  • Отслеживание видимости, когда вам нужна высокопроизводительная информация о положении композита в его корневом контейнере, экране или окне.
  • Модификатор Animate bounds для красивой автоматической анимации положения и размера Composable в пределах LookaheadScope.
  • Проверки доступности в тестах, позволяющие создавать более доступные пользовательские интерфейсы приложений с помощью автоматизированного тестирования a11y.

Если вы хотите опробовать новую функциональность Compose, альфа-версия BOM предлагает новые функции, над которыми работают сейчас, включая:

  • Паузы в Composition
  • Обновления в предварительной выборке LazyLayout
  • Контекстные меню
  • Новые модификаторы: onFirstVisible, onVisbilityChanged, contentType
  • Новые проверки линтера для часто меняющихся значений и элементов, которые должны быть запомнены в композиции

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

Material Expressive

На Google I/O представили Material Expressive — новейшую разработку Material Design, которая поможет вам сделать ваши продукты еще более привлекательными и простыми в использовании. Это комплексное добавление новых компонентов, стилей, движений и возможностей настройки, которые помогут вам создавать красивые насыщенные пользовательские интерфейсы. Библиотека Material3 в последней альфа-версии BOM содержит множество новых выразительных компонентов, которые вы можете опробовать.

Библиотека адаптивных макетов

Разработка адаптивных приложений для различных форм-факторов, включая телефоны, складные устройства, планшеты, настольные компьютеры, автомобили и Android XR, стала проще благодаря последним улучшениям в библиотеке адаптивных макетов Compose. В стабильном релизе 1.1 добавлена поддержка предиктивных жестов назад для более плавных переходов и расширение панелей для более гибких двухпанельных макетов на больших экранах. Кроме того, релиз 1.2 (альфа-версия) добавляет больше гибкости в отображении панелей, добавляя стратегии перетекания и левитации.

Производительность

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

Что нового в Jetpack Compose

Заметные изменения в последней альфа-версии BOM включают:

  • Паузы в Composition позволяют приостанавливать композиции и разбивать их работу на несколько кадров.
  • Фоновая предварительная выборка текста позволяет кэшам компоновки текста предварительно прогреваться в фоновом потоке, обеспечивая более быструю компоновку текста.
  • Улучшения предварительной выборки LazyLayout позволяют «ленивым» макетам умнее выбирать количество содержимого для предварительной выборки, используя преимущества композиции с паузами.

В совокупности эти улучшения устранили почти все подвисания во внутреннем бенчмарке.

Стабильность

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

Приложения Google разрабатываются и выпускаются с snapshot сборками Compose; таким образом, Compose тестируется сотнями тысяч тестов приложений Google, и любые проблемы с Compose немедленно устраняются командой. Недавно компания инвестировала в увеличение частоты обновления этих снапшотов и теперь обновляет их ежедневно с вершины дерева Compose, что означает, что быстрее получает отзывы и может устранять проблемы задолго до того, как они попадут в публичный релиз библиотеки.

Jetpack Compose также использует аннотации @Experimental для обозначения API, которые могут быть изменены. Некоторые API долгое время оставались экспериментальными, что снижало уверенность разработчиков в стабильности Compose. Теперь компания вложила средства в стабилизацию экспериментальных API, чтобы предоставить вам более надежную поверхность разработки, и за последний год сократила количество экспериментальных API на 32%.

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

class App : Application() {
   override fun onCreate() {
        // Enable only for debug flavor to avoid perf impact in release
        Composer.setDiagnosticStackTraceEnabled(BuildConfig.DEBUG)
   }
}

Библиотеки

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

Основной библиотекой, на которой основано любое приложение Compose, является Navigation. Разработчики часто сталкивались с ограничениями при управлении подъемом состояния и непосредственном манипулировании бэкстеком с помощью текущего решения Compose Navigation. Google вернулся к разработке и полностью переосмыслил, как библиотека навигации должна интегрироваться в ментальную модель Compose. так вышла библиотека Navigation 3, новый артефакт, созданный для того, чтобы предоставить вам больше возможностей для управления и упростить сложные навигационные потоки.

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

@Composable
private fun VideoPlayer(
    player: Player?, // from media3
    modifier: Modifier = Modifier
) {
    Box(modifier) {
        PlayerSurface(player) // from media3-ui-compose
        player?.let {
            // custom play-pause button UI
            val playPauseButtonState = rememberPlayPauseButtonState(it) // from media3-ui-compose
            MyPlayPauseButton(playPauseButtonState, Modifier.align(BottomEnd).padding(16.dp))
        }
    }
}

Инструменты

Продолжают совершенствовать инструменты Android Studio для создания пользовательских интерфейсов Compose. Последняя канари версия Narwhal включает в себя:

  • Изменяемые предварительные просмотры мгновенно показывают, как ваш пользовательский интерфейс Compose адаптируется к различным размерам окна
  • Улучшение навигации по превью с помощью кликабельных имен и компонентов
  • Studio Labs: Генерация предварительного просмотра Compose с помощью Gemini быстро генерирует предварительный просмотр
  • Studio Labs: Преобразование пользовательского интерфейса с помощью Gemini — изменяйте ваш пользовательский интерфейс с помощью естественного языка, прямо из превью
  • Studio Labs: Вложение изображений в Gemini генерирует код Compose из изображений

Для получения дополнительной информации читайте «Что нового в инструментах разработки Android«.

Новые проверки качества Compose

В альфа-версии BOM Compose появились две новые аннотации и связанные с ними проверки, которые помогут вам писать корректный и производительный код Compose. Аннотация @FrequentlyChangingValue и проверка FrequentlyChangedStateReadInComposition предупреждают о ситуациях, когда вызовы функций или чтение свойств в композиции могут вызвать частые перекомпоновки. Например, частые перекомпоновки могут происходить при чтении значений позиции прокрутки или анимации. Аннотация @RememberInComposition и проверка RememberInCompositionDetector предупреждают о ситуациях, когда конструкторы, функции и геттеры свойств вызываются непосредственно внутри композиции (например, конструктор TextFieldState) без запоминания.

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: