Создайте приложение Compose Multiplatform
Здесь вы узнаете, как создать и запустить первое приложение Compose Multiplatform с помощью IntelliJ IDEA.
С помощью UI-фреймворка Compose Multiplatform можно использовать возможности совместного использования кода Kotlin Multiplatform не только для логики приложения. Вы можете создать пользовательский интерфейс один раз и использовать его на всех платформах, поддерживаемых Compose Multiplatform.
В этом руководстве вы создадите пример приложения, работающего на Android, iOS, настольных компьютерах и в вебе. Для создания пользовательского интерфейса вы будете использовать фреймворк Compose Multiplatform и познакомитесь с его основами: компонуемыми функциями, темами, макетами, событиями и модификаторами.
Что следует учитывать при работе с этим руководством:
Предварительный опыт работы с Compose Multiplatform, Android или iOS не требуется. Однако перед началом мы рекомендуем ознакомиться с основами Kotlin.
Для выполнения этого руководства вам понадобится только IntelliJ IDEA. Она позволяет попробовать многоплатформенную разработку для Android и настольных компьютеров. Для iOS понадобится компьютер с macOS и установленным Xcode. Это общее ограничение разработки для iOS.
При желании можно выбрать только интересующие вас платформы и не добавлять остальные.
Создание проекта
В кратком руководстве выполните инструкции по настройке среды для разработки Kotlin Multiplatform.
В IntelliJ IDEA выберите Файл | Создать | Проект.
-
На панели слева выберите Kotlin Multiplatform.
-
Укажите следующие данные в окне Новый проект:
Имя: ComposeDemo
Идентификатор проекта (используется как имя пакета): compose.project.demo
Выберите целевые платформы Android, iOS, Desktop и Web. Убедитесь, что для iOS и веба выбран параметр Общий UI.
-
Заполнив все поля и выбрав целевые платформы, нажмите Создать (Скачать в веб-мастере).

Изучение структуры проекта
В IntelliJ IDEA перейдите в папку ComposeDemo. Если вы не выбрали iOS в мастере, у вас не будет папок, названия которых начинаются с «ios» или «apple».
Проект содержит следующие модули:
shared — это модуль Kotlin Multiplatform, содержащий общую логику приложений для Android, настольных компьютеров, iOS и веба — код, используемый на всех платформах. Для автоматизации процесса сборки в нем используется система сборки Gradle.
androidApp — модуль, который собирается в приложение для Android.
iosApp — проект Xcode, который собирается в приложение для iOS. Он зависит от общего модуля и использует его как фреймворк iOS.
desktopApp — модуль, который собирается в настольное приложение для JVM. Он зависит от модуля
shared.webApp — модуль, который собирается в веб-приложения для Kotlin/JS и Kotlin/Wasm.
Модуль shared содержит следующие наборы исходников: androidMain, commonMain, iosMain, jsMain, jvmMain и wasmJsMain (а также соответствующие наборы исходников -Test, если вы решили добавить тесты).
Набор исходников — это понятие Gradle, обозначающее логически сгруппированные файлы, у каждой такой группы есть собственные зависимости. В Kotlin Multiplatform разные наборы исходников обычно предназначены для разных платформ.
Набор исходников commonMain использует общий код Kotlin, а наборы исходников для платформ содержат код Kotlin, предназначенный для каждой целевой платформы:
jvmMainсодержит исходные файлы для настольной платформы, использующей Kotlin/JVM.androidMainсодержит исходные файлы Android и предназначен для Kotlin/JVM.iosMainсодержит код Kotlin для iOS и предназначен для Kotlin/Native.jsMainсодержит код Kotlin для JavaScript и предназначен для Kotlin/JS.wasmJsMainсодержит код Kotlin для Wasm и предназначен для Kotlin/Wasm.
Таким образом, при сборке модуля shared в библиотеку Android общий код Kotlin обрабатывается как Kotlin/JVM, а при сборке в фреймворк iOS — как Kotlin/Native. При сборке общего модуля в веб-приложение общий код Kotlin при необходимости обрабатывается как Kotlin/Wasm или Kotlin/JS.
По возможности реализуйте функциональность в общем коде, чтобы написать ее один раз и обеспечить одинаковую работу на всех платформах. В идеале наборы исходников для платформ должны содержать только вызовы платформенных API и сценарии взаимодействия с пользователем, специфичные для платформы.
В каталоге shared/src/commonMain/kotlin откройте файл App.kt. В нем находится функция App(), реализующая минималистичный, но полноценный пользовательский интерфейс Compose Multiplatform:
@Composable
@Preview
fun App() {
MaterialTheme {
var showContent by remember { mutableStateOf(false) }
Column(
modifier = Modifier
.background(MaterialTheme.colorScheme.primaryContainer)
.safeContentPadding()
.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
) {
Button(onClick = { showContent = !showContent }) {
Text("Click me!")
}
AnimatedVisibility(showContent) {
val greeting = remember { Greeting().greet() }
Column(
modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally,
) {
Image(painterResource(Res.drawable.compose_multiplatform), null)
Text("Compose: $greeting")
}
}
}
}
}
Запустим приложение на всех поддерживаемых платформах.
Запуск приложения
Приложение можно запустить на Android, iOS, настольном компьютере и в вебе. Запускать приложения в каком-либо определенном порядке не нужно — начните с той платформы, с которой вы лучше знакомы.
Запуск приложения на Android
В списке конфигураций запуска выберите androidApp.
Выберите виртуальное устройство Android и нажмите Запустить: IDE запустит выбранное виртуальное устройство, если оно выключено, и запустит приложение.

Запуск на другом эмулируемом устройстве Android
Запуск на физическом устройстве Android
Запуск приложения на iOS
Если вы не запускали Xcode во время первоначальной настройки, сделайте это перед запуском приложения для iOS.
В IntelliJ IDEA выберите iosApp в списке конфигураций запуска, выберите эмулируемое устройство рядом с конфигурацией запуска и нажмите Запустить.

Запуск на физическом устройстве iOS
Вы можете запустить многоплатформенное приложение на физическом устройстве iOS. Перед началом вам потребуется указать Team ID, связанный с вашим Apple ID.
Настройка Team ID
Чтобы впервые задать Team ID для проекта, откройте проект в Xcode (Файл | Открыть проект в Xcode):
В навигаторе проекта слева выберите iosApp.
В разделе Цели выберите iosApp и перейдите на вкладку Подписание и возможности.
-
В списке Team выберите свою команду.
Если вы еще не настроили команду, выберите в списке Team пункт Добавить учетную запись и следуйте инструкциям Xcode.
Убедитесь, что Bundle Identifier уникален и сертификат подписи успешно назначен.
После настройки команды в Xcode можно задать или изменить команду в IntelliJ IDEA:
-
Измените конфигурацию запуска для iosApp:
Перейдите на вкладку Параметры, внесите необходимые изменения в раскрывающийся список Команда разработчиков и нажмите ОК.
Запуск приложения
Подключите iPhone кабелем. Если устройство уже зарегистрировано в Xcode, IntelliJ IDEA должна отобразить его в списке конфигураций запуска. Запустите соответствующую конфигурацию iosApp.
Если вы еще не зарегистрировали iPhone в Xcode, следуйте рекомендациям Apple. Кратко, необходимо:
Подключить iPhone кабелем.
Включить на iPhone режим разработчика: Настройки | Конфиденциальность и безопасность.
В Xcode открыть верхнее меню и выбрать Окно | Устройства и симуляторы.
Если iPhone не отображается как подключенный, нажать значок плюса внизу слева и выбрать устройство.
Следовать инструкциям на экране, чтобы завершить сопряжение.
После регистрации iPhone в Xcode он появится в списке доступных устройств в IntelliJ IDEA, когда вы выберете конфигурацию запуска iosApp.
Запуск приложения на настольном компьютере
Выберите desktopApp [hot] 🔥 в списке конфигураций запуска и нажмите Запустить. По умолчанию конфигурация запускает настольное приложение в отдельном окне ОС, используя Compose Hot Reload:

Запуск веб-приложения
-
В списке конфигураций запуска выберите:
webApp[js]: для запуска приложения Kotlin/JS.
webApp[wasmJs]: для запуска приложения Kotlin/Wasm.
Нажмите Запустить.
Веб-приложение автоматически откроется в браузере по умолчанию и будет доступно по адресу http://localhost:8080/.

Режим совместимости для веб-платформ
Для веб-приложения можно включить режим совместимости, чтобы оно изначально работало во всех браузерах. В этом режиме современные браузеры используют версию Wasm, а в старых браузерах применяется версия JS. Этот режим обеспечивается кросс-компиляцией для целевых платформ js и wasmJs.
Чтобы включить режим совместимости для веб-приложения:
Откройте окно инструментов Gradle, выбрав Вид | Окна инструментов | Gradle.
-
В разделе ComposeDemo | Tasks | compose выберите задачу composeCompatibilityBrowserDistribution и запустите ее.
Также можно выполнить следующую команду в терминале из корневого каталога
ComposeDemo:./gradlew composeCompatibilityBrowserDistribution
После завершения задачи Gradle в каталоге composeApp/build/dist/composeWebCompatibility/productionExecutable будут созданы совместимые артефакты. Эти артефакты можно использовать, чтобы опубликовать приложение, работающее на целевых платформах js и wasmJs.
Следующий шаг
В следующей части руководства вы узнаете, как реализовать компонуемые функции и запустить приложение на каждой платформе.
Помощь
Kotlin Slack. Получите приглашение и присоединитесь к каналу #multiplatform.
Система отслеживания ошибок Kotlin. Сообщите о новой проблеме.
© 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-create-first-app.html