Spec-Zone.ru › Kotlin 2

Что нового в Compose Multiplatform 1.6.10

Основные нововведения этого выпуска:

  • Несовместимое изменение: новый Gradle-плагин компилятора Compose

  • Поддержка многомодульных проектов с ресурсами Compose Multiplatform

  • Экспериментальная библиотека навигации

  • Библиотека Lifecycle с экспериментальным общим ViewModel

  • Известная проблема: MissingResourceException

Полный список изменений в этом выпуске смотрите на GitHub.

Зависимости

  • Gradle-плагин org.jetbrains.compose, версия 1.6.10. Основан на библиотеках Jetpack Compose:

    • Компилятор 1.5.14

    • Runtime 1.6.7

    • UI 1.6.7

    • Foundation 1.6.7

    • Material 1.6.7

    • Material3 1.2.1

  • Библиотеки Lifecycle org.jetbrains.androidx.lifecycle:lifecycle-*:2.8.0. Основаны на Jetpack Lifecycle 2.8.0.

  • Библиотеки Navigation org.jetbrains.androidx.navigation:navigation-*:2.7.0-alpha07. Основаны на Jetpack Navigation 2.7.7.

Несовместимое изменение: новый Gradle-плагин компилятора Compose

Начиная с Kotlin 2.0.0 для Compose Multiplatform требуется новый Gradle-плагин компилятора Compose. Подробности см. в руководстве по миграции.

Для всех платформ

Ресурсы

Стабильная библиотека ресурсов

Основная часть API библиотеки ресурсов теперь считается стабильной.

Поддержка многомодульных проектов с ресурсами Compose Multiplatform

Начиная с Compose Multiplatform 1.6.10, ресурсы можно хранить в любом модуле Gradle и любом исходном наборе, а также публиковать проекты и библиотеки, включающие ресурсы.

Чтобы включить поддержку нескольких модулей, обновите проект до Kotlin версии 2.0.0 или новее и Gradle версии 7.6 или новее.

DSL конфигурации ресурсов для нескольких платформ

Теперь можно настраивать генерацию класса Res в проекте: изменять модальность и назначенный классу пакет, а также выбирать условия его генерации: всегда, никогда или только при явной зависимости от библиотеки ресурсов.

Подробности см. в разделе документации.

Открытая функция для создания URI ресурса

Новая функция getUri() позволяет передавать во внешние библиотеки URI ресурса, зависящий от платформы, чтобы они могли напрямую обращаться к файлу. Подробности см. в документации.

Множественные формы строковых ресурсов

Теперь вместе с другими строковыми ресурсами для нескольких платформ можно определять множественные формы (строки количества). Подробности см. в документации.

Поддержка трехбуквенных локалей

Квалификаторы языка теперь поддерживают коды локалей alpha-3 (ISO 639-2).

Экспериментальные функции для получения изображений и шрифтов в виде массивов байтов

Вы можете попробовать две функции, позволяющие получать шрифты и изображения в виде массивов байтов: getDrawableResourceBytes() и getFontResourceBytes(). Эти функции предназначены для упрощения доступа к ресурсам для нескольких платформ из сторонних библиотек.

Подробнее см. в запросе на включение изменений.

Экспериментальная библиотека навигации

Теперь доступна общая библиотека навигации на основе Jetpack Compose. Подробности см. в документации.

Основные ограничения этой версии:

  • Глубокие ссылки (их обработка или переход по ним) пока не поддерживаются.

  • Функция BackHandler и предиктивные жесты возврата поддерживаются только на Android.

Библиотека Lifecycle

Теперь доступна общая библиотека жизненного цикла на основе Jetpack Lifecycle. Подробности см. в документации.

Библиотека создана главным образом для поддержки общей функциональности навигации, но также предлагает экспериментальную кроссплатформенную реализацию ViewModel и включает общий интерфейс LifecycleOwner, который можно реализовать в проектах.

Compose Multiplatform также предоставляет общую реализацию ViewModelStoreOwner.

Поддержка Kotlin 2.0.0

Kotlin 2.0.0 вышел одновременно с новым Gradle-плагином компилятора Compose. Чтобы использовать Compose Multiplatform с последней версией компилятора, примените плагин к модулям проекта (подробности см. в руководстве по миграции).

Настольные платформы

Базовая поддержка BasicTextField2

Компонент Compose BasicTextField2 теперь поддерживается на базовом уровне для настольных платформ. Используйте его, если он необходим вашему проекту, или чтобы протестировать его, но учитывайте, что некоторые граничные случаи могут быть не обработаны. Например, BasicTextField2 пока не поддерживает события IME, поэтому вы не сможете использовать виртуальные клавиатуры для китайского, японского и корейского языков.

Полная поддержка компонента и поддержка других платформ запланированы в выпуске Compose Multiplatform 1.7.0.

Флаг alwaysOnTop для DialogWindow

Чтобы окна диалогов не перекрывались другими окнами, теперь можно использовать флаг alwaysOnTop для компонента DialogWindow.

Подробности см. в запросе на включение изменений.

iOS

Улучшения поддержки специальных возможностей

В этом выпуске:

  • диалоговые окна и всплывающие окна корректно интегрированы со средствами специальных возможностей,

  • представления совместимости, созданные с помощью UIKitView и UIKitViewController, теперь доступны службам специальных возможностей,

  • семантика LiveRegion поддерживается API специальных возможностей,

  • прокрутка с помощью специальных возможностей поддерживается,

  • поддерживается HapticFeedback.

Лупа в контейнере выделения для iOS 17 и новее

Контейнеры выделения Compose Multiplatform на iOS теперь имитируют стандартную лупу.

Screenshot of iPhone chat app with the text magnifier active

Учет программной клавиатуры при центрировании диалогов

Поведение компонентов Dialog теперь согласовано с Android: при появлении на экране программной клавиатуры диалоги центрируются с учетом фактической высоты окна приложения. Это можно отключить с помощью свойства DialogProperties.useSoftwareKeyboardInset.

Веб

Поддержка Kotlin/Wasm в альфа-версии

Экспериментальная версия Compose Multiplatform для Web перешла в альфа-стадию:

  • Большая часть функциональности Web аналогична Compose Multiplatform для Desktop.

  • Команда стремится довести платформу Web до выпуска.

  • Следующий шаг — тщательная адаптация большинства компонентов для браузеров.

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

Базовая поддержка клавиатур IME

Целевая платформа Web для Compose Multiplatform теперь поддерживает виртуальные клавиатуры (IME) на базовом уровне.

Gradle-плагин

Возможность изменить минимальную версию macOS

В предыдущих версиях нельзя было загрузить приложение для macOS в App Store, не включив в него версию для Intel. Теперь можно задать минимальную версию macOS для приложения среди платформенных параметров Compose Multiplatform:

compose.desktop {
    application {
        nativeDistributions {
            macOS {
                minimumSystemVersion = "12.0"
            }
        }
    }
}

Подробности см. в запросе на включение изменений.

Возможность создавать uber JAR с поддержкой ProGuard

Теперь можно создавать uber JAR (комплексные пакеты, содержащие JAR-файлы приложения и всех его зависимостей) с помощью задач ProGuard Gradle.

Подробности см. в руководстве по минификации и обфускации.

Известная проблема: MissingResourceException

После перехода с Kotlin 1.9.x на 2.0.0 (или в обратном направлении) может возникнуть ошибка org.jetbrains.compose.resources.MissingResourceException: Missing resource with path: .... Чтобы устранить ее, удалите все каталоги build в проекте. В том числе каталоги в корневой папке и папках модулей проекта.

19 мая 2025 г.
Что нового в Compose Multiplatform 1.7.3Что нового в Compose Multiplatform 1.6.0

© 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-1610.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API