Как упакованы мультиплатформенные библиотеки Jetpack
Compose Multiplatform предоставляет всю мощь Jetpack Compose и связанных с ним библиотек AndroidX для платформ, отличных от Android. Как показано на сайте Android Developers, многие библиотеки Jetpack (например, androidx.annotation) публикуются командой Android как полностью мультиплатформенные и могут использоваться в проектах KMP без изменений. Другим библиотекам, таким как сам Compose, Navigation, Lifecycle и ViewModel, требуется дополнительная поддержка для работы в общем коде.
Команда Compose Multiplatform в JetBrains создает артефакты таких библиотек для платформ, отличных от Android, а затем публикует их вместе с исходными артефактами Android под единым идентификатором группы. Поэтому при добавлении такой мультиплатформенной зависимости в общий набор исходного кода дистрибутив приложения для Android использует артефакт Android. При этом дистрибутивы для других целевых платформ используют артефакты, созданные для соответствующих платформ.
Процесс выглядит следующим образом:
Например, «артефакты Navigation для iOS» — это набор следующих мультиплатформенных артефактов:
org.jetbrains.androidx.navigation.navigation-compose-uikitarm64org.jetbrains.androidx.navigation.navigation-compose-uikitsimarm64org.jetbrains.androidx.navigation.navigation-common-iosarm64org.jetbrains.androidx.navigation.navigation-runtime-iossimulatorarm64И так далее.
Все эти артефакты вместе с артефактами для других платформ и ссылкой на исходную библиотеку Android (androidx.navigation.navigation-compose) публикуются как группа. К ним можно получить доступ через объединяющую зависимость org.jetbrains.androidx.navigation.navigation-compose. Плагин Gradle Compose Multiplatform сопоставляет артефакты для конкретных платформ с дистрибутивами.
При таком подходе приложение Android, создаваемое проектом Kotlin Multiplatform (KMP) с этой зависимостью, использует исходную библиотеку Android Navigation. Приложение iOS, в свою очередь, использует соответствующую библиотеку iOS, созданную JetBrains.
Пакеты Compose, доступные для мультиплатформенных проектов
Среди базовых библиотек Compose основная библиотека androidx.compose.runtime является полностью мультиплатформенной. (Ранее использовавшийся артефакт org.jetbrains.compose.runtime теперь служит псевдонимом.) Кроме того, Compose Multiplatform реализует:
Мультиплатформенные версии
androidx.compose.uiиandroidx.compose.foundation, доступные в проектах Compose Multiplatform какorg.jetbrains.compose.uiиorg.jetbrains.compose.foundation.Мультиплатформенные версии
androidx.compose.material3иandroidx.compose.material, которые упакованы аналогичным образом (org.jetbrains.compose.material3иorg.jetbrains.compose.material). В отличие от остальных, библиотека Material 3 не привязана к версиям Compose Multiplatform. Поэтому вместо псевдонимаmaterial3можно указать прямую зависимость. Например, можно использовать версию EAP.Библиотека Material 3 adaptive в виде отдельных артефактов (
org.jetbrains.compose.material3.adaptive:adaptive*)
Дополнительные мультиплатформенные библиотеки
Некоторые функции, необходимые для создания приложений Compose, выходят за рамки AndroidX, поэтому JetBrains реализует их в виде мультиплатформенных библиотек, поставляемых вместе с Compose Multiplatform, например:
-
Плагин Gradle Compose Multiplatform, который:
Предоставляет DSL Gradle для настройки проектов Compose Multiplatform.
Помогает создавать пакеты дистрибутивов для целевых платформ desktop и web.
Поддерживает мультиплатформенную библиотеку ресурсов, обеспечивая их корректную доступность для каждой целевой платформы.
org.jetbrains.compose.components.resources, обеспечивающий поддержку кроссплатформенных ресурсов.org.jetbrains.compose.components.uiToolingPreview, обеспечивающий поддержку предварительного просмотра Compose UI для общего кода в IntelliJ IDEA и Android Studio.org.jetbrains.compose.components.animatedimage, обеспечивающий отображение анимированных изображений.org.jetbrains.compose.components.splitpane, реализующий аналог класса Swing JSplitPane.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/multiplatform/compose-multiplatform-jetpack-libraries.html