Разработка
Что нового в 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, используют и любят его.
Новые фичи
С момента 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; никаких изменений кода не требуется.
Заметные изменения в последней альфа-версии 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
) без запоминания.
-
Кроссплатформенная разработка4 недели назад
Новый плагин KMP для IntelliJ IDEA и Android Studio
-
Аналитика промо-кампаний4 недели назад
Сравнение конверсий IAP и веб платежей в iOS-приложении
-
Новости4 недели назад
Видео и подкасты о мобильной разработке 2025.20
-
Дизайн и прототипирование3 недели назад
Stitch — новый ИИ-генератор дизайна от Google