Site icon AppTractor

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

На 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 добавил новые функции, такие как:

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

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

Material Expressive

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

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

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

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

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

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

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

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

Обновление зависимостей 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 включает в себя:

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

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

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

Exit mobile version