Что нового в Compose Multiplatform 1.11.1
Основные нововведения этого выпуска:
Полный список изменений доступен на GitHub. Версии отдельных компонентов для этого выпуска перечислены в разделе Зависимости.
Несовместимые изменения и устаревшие API
Обёртка для шейдеров на платформах, отличных от Android
На платформах, отличных от Android, тип Shader переработан: вместо actual typealias типа org.jetbrains.skia.Shader теперь используется специальный класс-обёртка Compose. Это изменение позволяет отделить общий API от прямых зависимостей от Skia/Skiko.
Действия по миграции:
Чтобы использовать шейдеры Skia/Skiko в API Compose, оберните их с помощью
SkShader.asComposeShader().Чтобы получить доступ к низкоуровневым типам Skia из
ShaderCompose, используйте свойство-расширениеShader.skiaShader.Если вы используете сторонние библиотеки, зависящие от API
Shader, обновите их до более новых совместимых версий.
Повышена минимальная версия Kotlin
Если в проекте используются нативные или веб-цели, для работы с новейшими возможностями необходимо перейти на Kotlin 2.3.10.
Изменения в поддержке целевых платформ iOS
Compose Multiplatform больше не поддерживает целевые платформы Apple x86_64, поскольку в Kotlin они объявлены устаревшими. В результате целевые платформы iosX64 и macosX64 полностью удалены из всех модулей.
Минимальная поддерживаемая версия iOS также повышена с 13.0 до 14.0.
Устаревшие API
В Compose Multiplatform 1.9.0 мы добавили компонуемую функцию
WebElementView, позволяющую легко интегрировать HTML-элементы в веб-приложение. Оказалось, что выбранное название не совсем понятно, поэтому мы переименовали функцию вHtmlElementView, чтобы точнее отразить её назначение, связанное с HTML. ВерсияWebElementViewобъявлена устаревшей; вместо неё следует использоватьHtmlElementView.Key.Homeобъявлен устаревшим из-за неправильного сопоставления. ИспользуйтеKey.MoveHomeдля навигации с клавиатуры илиKey.SystemHomeдля действий на уровне системы.
Все платформы
Тесты Compose UI v2
В Compose Multiplatform добавлена поддержка API ComposeUiTest версии v2 на платформах, отличных от Android. Эти новые API используют StandardTestDispatcher в качестве диспетчера тестов по умолчанию вместо UnconfinedTestDispatcher. Это изменение гарантирует, что сопрограммы выполняются в соответствии с порядком очереди событий, повышая надёжность тестов и приближая их поведение к рабочей среде.
Также добавлена поддержка параметра effectContext в тестах Compose UI v2. С помощью этого параметра можно указать пользовательский контекст сопрограмм при выполнении композиций.
Ранее доступные API тестирования, такие как runComposeUiTest, runSkikoComposeUiTest и runDesktopComposeUiTest, теперь объявлены устаревшими; вместо них следует использовать версии v2.
Skia обновлена до Milestone 144
Версия Skia, используемая в Compose Multiplatform через Skiko, обновлена до Milestone 144.
Ранее использовалась версия Skia Milestone 138. Изменения между этими версиями можно посмотреть в примечаниях к выпуску.
iOS
Ввод текста с помощью нативных средств
В Compose Multiplatform появилась новая реализация ввода текста, использующая нативные UIView iOS для управления вводом с помощью протоколов UITextInput и UIKeyInput. Это обеспечивает полностью нативное поведение при редактировании текста в iOS, включая точное перемещение курсора, нативные жесты и обработку выделения, а также системные контекстные меню с такими пунктами, как Autofill, Translate и Search. Новый подход соответствует внешнему виду и поведению нативных приложений iOS, а также улучшает совместимость с будущими обновлениями Apple.
Существующая реализация ввода текста Compose Multiplatform остаётся стабильным вариантом, обеспечивающим единообразие на разных платформах, а нативный подход ориентирован на взаимодействие с пользователем, специально адаптированное для iOS.
Чтобы включить новый способ ввода текста, используйте параметр usingNativeTextInput в исходном наборе iOS:
@ExperimentalComposeUiApi
BasicTextField(
value = state,
keyboardOptions = KeyboardOptions(
platformImeOptions = PlatformImeOptions {
usingNativeTextInput(true)
}
)
)
Новый нативный способ ввода текста поддерживает API BasicTextField(TextFieldValue) и BasicTextField(TextFieldState), а также совместим с новым API контекстного меню, включаемым с помощью флага isNewContextMenuEnabled.
Параллельная отрисовка включена по умолчанию
В Compose Multiplatform 1.8.0 мы добавили экспериментальную возможность переноса задач отрисовки в выделенный поток рендеринга, которую можно было включить по желанию.
Начиная с Compose Multiplatform 1.11.0 параллельная отрисовка включена по умолчанию.
Веб
Прокрутка в веб-версиях теперь соответствует нативному UI
В Compose Multiplatform производительность прокрутки в веб-версиях уступала нативным пользовательским интерфейсам. В выпуске 1.11.0 были существенно переработаны и исправлены механизмы обработки касаний, благодаря чему прокрутка в веб-приложениях Compose стала соответствовать другим поддерживаемым целевым платформам. Результат этих улучшений можно увидеть в последней веб-версии приложения KotlinConf.
В рамках этой работы также улучшено декодирование изображений Coil в веб-версиях. Если вы используете Coil, обновите его до версии 3.4.0, чтобы получить наилучшие результаты.
Список исправлений, пояснения и демонстрации улучшений доступны в задаче CMP-9727.
Зависимости
Библиотека |
Координаты Maven |
Версия Jetpack, на которой основана |
|---|---|---|
Среда выполнения |
|
|
Пользовательский интерфейс |
|
|
Foundation |
|
|
Material |
|
|
Material3 |
|
|
Material3 Adaptive |
|
|
Lifecycle |
|
|
Навигация |
|
|
Navigation3 |
|
|
Событие навигации |
|
|
Сохранённое состояние |
|
|
Ядро WindowManager |
|
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/multiplatform/whats-new-compose-111.html