Spec-Zone.ru › Kotlin 2

Часто задаваемые вопросы

Kotlin Multiplatform

Что такое Kotlin Multiplatform?

Kotlin Multiplatform (KMP) — это технология с открытым исходным кодом от JetBrains для гибкой кроссплатформенной разработки. Она позволяет создавать приложения для различных платформ и эффективно повторно использовать код на разных платформах, сохраняя преимущества нативного программирования. С помощью Kotlin Multiplatform можно разрабатывать приложения для Android, iOS, настольных компьютеров, веб-серверов и других платформ.

Можно ли совместно использовать код пользовательского интерфейса с помощью Kotlin Multiplatform?

Да, вы можете совместно использовать пользовательские интерфейсы с помощью Compose Multiplatform — декларативного UI-фреймворка JetBrains на основе Kotlin и Jetpack Compose. Этот фреймворк позволяет создавать общие компоненты пользовательского интерфейса для таких платформ, как iOS, Android, настольные компьютеры и веб, помогая поддерживать единообразный интерфейс на разных устройствах и платформах.

Подробнее см. в разделе Compose Multiplatform.

Какие платформы поддерживает Kotlin Multiplatform?

Kotlin Multiplatform поддерживает Android, iOS, настольные компьютеры, веб, серверную разработку и другие платформы. Подробнее о поддерживаемых платформах.

В какой IDE следует разрабатывать кроссплатформенное приложение?

Для работы с проектами Kotlin Multiplatform мы рекомендуем использовать IntelliJ IDEA или Android Studio.

Если ваш проект Kotlin Multiplatform предназначен для iOS, на компьютере должна быть установлена Xcode, чтобы писать код для iOS и запускать приложения для этой платформы.

Как создать проект Kotlin Multiplatform?

В руководствах «Создание приложения Kotlin Multiplatform» приведены пошаговые инструкции по созданию проектов Kotlin Multiplatform. Вы можете выбрать, чем делиться между платформами: только логикой или логикой вместе с пользовательским интерфейсом.

У меня уже есть приложение для Android. Как перенести его на Kotlin Multiplatform?

Пошаговое руководство «Запуск приложения Android на iOS» объясняет, как обеспечить работу приложения Android на iOS с нативным пользовательским интерфейсом.

Руководство «Перенос приложения Jetpack Compose на Kotlin Multiplatform» предназначено для продвинутых пользователей и описывает полный процесс преобразования сложного приложения Android в мультиплатформенное, включая перенос пользовательского интерфейса на Compose Multiplatform.

Где найти готовые примеры для экспериментов?

Вот список примеров из реальной практики.

Где найти список реальных приложений Kotlin Multiplatform? Какие компании используют KMP в продуктивной среде?

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

В каких операционных системах можно работать с Kotlin Multiplatform?

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

Чтобы писать код для iOS и запускать приложения iOS в симуляторе или на реальном устройстве, используйте Mac с macOS. Согласно требованиям Apple, симуляторы iOS работают только в macOS, а не в других операционных системах, таких как Microsoft Windows или Linux.

Подробнее см. в разделе рекомендуемые IDE.

Как писать параллельный код в проектах Kotlin Multiplatform?

В проектах Kotlin Multiplatform по-прежнему можно использовать корутины и потоки для написания асинхронного кода. Способ вызова такого кода зависит от того, откуда он вызывается. Вызовы приостанавливаемых функций и потоков из кода Kotlin подробно описаны в документации, особенно для Android. Для вызова из кода Swift требуется немного больше усилий; подробности см. в задаче KT-47610.

Сейчас для вызова приостанавливаемых функций и потоков из Swift лучше всего использовать плагины и библиотеки, например KMP-NativeCoroutines, вместе с async/await из Swift или такими библиотеками, как Combine и RxSwift.

На данный момент KMP-NativeCoroutines — более проверенное решение. Оно поддерживает подходы к параллельному программированию с использованием async/await, Combine и RxSwift. SKIE проще настроить, а его код менее многословен. Например, он напрямую преобразует Kotlin Flow в Swift AsyncSequence. Обе библиотеки обеспечивают корректную отмену корутин.

Инструкции по их использованию см. в руководстве «Совместное использование большего объёма логики между iOS и Android».

Что такое Kotlin/Native и как он связан с Kotlin Multiplatform?

Kotlin/Native — это технология компиляции кода Kotlin в нативные двоичные файлы, которые могут работать без виртуальной машины. Она включает бэкенд на основе LLVM для компилятора Kotlin и нативную реализацию стандартной библиотеки Kotlin.

Kotlin/Native предназначен прежде всего для компиляции под платформы, где использование виртуальных машин нежелательно или невозможно, например для встраиваемых устройств и iOS. Он особенно подходит, когда нужно создать автономную программу, которой не требуется дополнительная среда выполнения или виртуальная машина.

Например, в мобильных приложениях общий код на Kotlin компилируется в байт-код JVM для Android с помощью Kotlin/JVM, а для iOS — в нативные двоичные файлы с помощью Kotlin/Native. Благодаря этому интеграция с Kotlin Multiplatform для обеих платформ становится бесшовной.

Kotlin/Native and Kotlin/JVM binaries

Как ускорить компиляцию модуля Kotlin Multiplatform для нативных платформ (iOS, macOS, Linux)?

См. рекомендации по сокращению времени компиляции Kotlin/Native.

Compose Multiplatform

Что такое Compose Multiplatform?

Compose Multiplatform — это современный декларативный реактивный UI-фреймворк от JetBrains, позволяющий легко создавать пользовательские интерфейсы с небольшим количеством кода Kotlin. Он также позволяет написать пользовательский интерфейс один раз и запускать его на любой из поддерживаемых платформ: iOS, Android, настольных компьютерах (Windows, macOS, Linux) и в вебе.

Как он связан с Jetpack Compose для Android?

Большая часть API Compose Multiplatform совпадает с API Jetpack Compose — UI-фреймворка Android, разработанного Google. Фактически, если использовать Compose Multiplatform для Android, приложение просто работает на Jetpack Compose. Для других целевых платформ Compose Multiplatform детали реализации могут отличаться от Jetpack Compose для Android, но API остаются теми же.

Подробности см. в обзоре взаимосвязи этих фреймворков.

Между какими платформами можно совместно использовать пользовательский интерфейс?

Мы стремимся дать вам возможность совместно использовать пользовательский интерфейс в любых сочетаниях популярных платформ: Android, iOS, настольных компьютеров (Linux, macOS, Windows) и веба (на базе Wasm). Сейчас Compose Multiplatform имеет стабильный статус для Android, iOS и настольных компьютеров. Подробнее см. в разделе Поддерживаемые платформы.

Можно ли использовать Compose Multiplatform в продуктивной среде?

Compose Multiplatform имеет стабильный статус для Android, iOS и настольных компьютеров. Вы можете использовать его в продуктивной среде.

Версия Compose Multiplatform для веба на базе WebAssembly находится в бета-версии, то есть почти готова. Её можно использовать, но при переходе всё ещё могут возникнуть проблемы. Она предоставляет тот же пользовательский интерфейс, что и Compose Multiplatform для iOS, Android и настольных компьютеров.

Как создать проект Compose Multiplatform?

В руководстве «Создание приложения Compose Multiplatform с общей логикой и пользовательским интерфейсом» приведены пошаговые инструкции по созданию проекта Kotlin Multiplatform с Compose Multiplatform для Android, iOS и настольных компьютеров. Также можно посмотреть видеоруководство на YouTube, созданное разработчиком и евангелистом Kotlin Себастьяном Айгнером.

Какую IDE использовать для создания приложений с Compose Multiplatform?

Рекомендуем использовать IntelliJ IDEA или Android Studio с установленным плагином KMP для IDE.

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

Можно ли попробовать демонстрационное приложение? Где его найти?

Вы можете поэкспериментировать с нашими примерами.

Включает ли Compose Multiplatform виджеты?

Да, Compose Multiplatform полностью поддерживает виджеты Material 3.

Насколько можно настраивать внешний вид виджетов Material?

С помощью средств темизации Material можно настраивать цвета, шрифты и внутренние отступы. Если вы хотите создать уникальный дизайн, можно создавать собственные виджеты и макеты.

Можно ли совместно использовать пользовательский интерфейс в существующем приложении Kotlin Multiplatform?

Если в приложении используется нативный API пользовательского интерфейса (что встречается чаще всего), можно постепенно переписать некоторые его части на Compose Multiplatform, поскольку он поддерживает взаимодействие с нативным кодом. Нативные интерфейсы можно заменить специальным представлением для взаимодействия, которое оборачивает общий интерфейс, созданный с помощью Compose.

У меня есть приложение Android на Jetpack Compose. Что нужно сделать, чтобы перенести его на другие платформы?

Перенос приложения состоит из двух частей: переноса пользовательского интерфейса и переноса логики. Сложность зависит от сложности приложения и количества используемых библиотек, специфичных для Android.

Пример переноса сложного приложения см. в руководстве «Перенос приложения Jetpack Compose на Kotlin Multiplatform».

Большинство экранов можно перенести на Compose Multiplatform без изменений. Поддерживаются все виджеты Jetpack Compose. Однако некоторые API работают только для Android — они могут быть специфичны для этой платформы или ещё не перенесены на другие платформы. Например, работа с ресурсами специфична для Android, поэтому потребуется перейти на библиотеку ресурсов Compose Multiplatform или использовать стороннее решение. Список компонентов, доступных только для Android, см. в актуальном перечне API только для Android.

Необходимо перенести бизнес-логику на Kotlin Multiplatform. При перемещении кода в общие модули перестанут компилироваться части, использующие зависимости Android, и их потребуется переписать.

  • Код, использующий зависимости только для Android, можно переписать с использованием мультиплатформенных библиотек. Некоторые библиотеки уже поддерживают Kotlin Multiplatform, поэтому изменений не потребуется. Проверьте каталог klibs.io или список библиотек KMP-awesome.

  • Также можно отделить общий код от платформенно-зависимой логики и предоставить общие интерфейсы, реализация которых будет зависеть от платформы. В Android реализация может использовать имеющуюся функциональность, а для других платформ, например iOS, потребуется создать новые реализации общих интерфейсов.

Можно ли интегрировать экраны Compose в существующее приложение iOS?

Да. Compose Multiplatform поддерживает различные сценарии интеграции. Подробнее об интеграции с UI-фреймворками iOS см. в разделах «Интеграция со SwiftUI» и «Интеграция с UIKit».

Можно ли интегрировать компоненты UIKit или SwiftUI в экран Compose?

Да. См. разделы «Интеграция со SwiftUI» и «Интеграция с UIKit».

Что произойдёт, если после обновления мобильной ОС изменится внешний вид или поведение системных компонентов?

После обновления ОС ваш пользовательский интерфейс останется прежним, поскольку все компоненты отрисовываются на холсте. Если встроить в экран нативные компоненты iOS, обновления могут повлиять на их внешний вид.

Планы на будущее

Каковы планы по развитию Kotlin Multiplatform?

В JetBrains мы активно работаем над тем, чтобы обеспечить наилучшие условия для мультиплатформенной разработки и устранить существующие проблемы пользователей. Мы планируем улучшать базовую технологию Kotlin Multiplatform, интеграцию с экосистемой Apple, инструменты и UI-фреймворк Compose Multiplatform. Ознакомьтесь с разделом о мультиплатформенной разработке в дорожной карте Kotlin.

Когда Compose Multiplatform получит стабильный статус?

Compose Multiplatform имеет стабильный статус для Android, iOS и настольных компьютеров, а поддержка веба на базе Wasm находится в бета-версии. Мы работаем над стабильным выпуском для веб-платформы; точные сроки будут объявлены позже.

Подробнее о статусах стабильности см. в разделе Поддерживаемые платформы.

Каковы перспективы поддержки веб-платформ в Kotlin и Compose Multiplatform?

Сейчас мы сосредоточили ресурсы на WebAssembly (Wasm), который демонстрирует большой потенциал. Вы можете попробовать наш новый бэкенд Kotlin/Wasm и Compose Multiplatform для веба на базе Wasm.

Что касается цели JS, бэкенд Kotlin/JS уже получил стабильный статус. В Compose Multiplatform из-за ограниченных ресурсов мы переключили внимание с JS Canvas на Wasm, который, по нашему мнению, обладает большими перспективами.

Мы также предлагаем Compose HTML, ранее известный как Compose Multiplatform для веба. Это дополнительная библиотека для работы с DOM в Kotlin/JS, не предназначенная для совместного использования пользовательских интерфейсов на разных платформах.

Планируется ли улучшать инструменты для мультиплатформенной разработки?

Да, мы хорошо знакомы с текущими проблемами инструментов для мультиплатформенной разработки и активно работаем над улучшениями в нескольких областях.

Планируете ли вы обеспечить взаимодействие со Swift?

Да. Сейчас мы изучаем различные способы обеспечить прямое взаимодействие со Swift, уделяя особое внимание экспорту кода Kotlin в Swift.

15 мая 2026 г.
Учебные материалыНачало работы с Compose Multiplatform

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/multiplatform/faq.html

Spec-Zone.ru

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