Понимание структуры проекта Multiplatform
Рассмотрим основные части вашего проекта Multiplatform:
Плагин Multiplatform
При создании проекта Multiplatform мастер проекта автоматически применяет плагин kotlin-multiplatform Gradle в файле build.gradle(.kts).
Вы также можете применить его вручную.
plugins {
kotlin("multiplatform") version "1.7.20"
}
plugins {
id 'org.jetbrains.kotlin.multiplatform' version '1.7.20'
}
Плагин kotlin-multiplatform настраивает проект для создания приложения или библиотеки, работающих на нескольких платформах, и подготавливает его для сборки на этих платформах.
В файле build.gradle(.kts) он создает расширение kotlin на верхнем уровне, которое включает конфигурацию для целевых платформ, наборов исходных кодов и зависимостей.
Целевые платформы
Проект Multiplatform ориентирован на несколько платформ, которые представлены различными целевыми платформами. Целевая платформа является частью сборки, отвечающей за сборку, тестирование и упаковку приложения для конкретной платформы, такой как macOS, iOS или Android. См. список поддерживаемых платформ.
При создании проекта Multiplatform целевые платформы добавляются в блок kotlin в файле build.gradle (build.gradle.kts).
kotlin {
jvm()
js {
browser {}
}
}
Узнайте, как настроить целевые платформы вручную.
Наборы исходных кодов
Проект включает директорию src с наборами исходных кодов Kotlin, которые представляют собой коллекции файлов кода Kotlin вместе с их ресурсами, зависимостями и настройками языка. Набор исходных кодов может использоваться в компиляциях Kotlin для одной или нескольких целевых платформ.
Каждая директория набора исходных кодов включает файлы кода Kotlin (директория kotlin) и resources. Мастер проекта создает стандартные наборы исходных кодов для компиляций main и test общего кода и всех добавленных целевых платформ.
Наборы исходных кодов добавляются в блок sourceSets блока верхнего уровня kotlin. Например, вот структура наборов исходных кодов, которую вы получаете при создании многоплатформенной библиотеки с помощью мастера проектов IntelliJ IDEA:
kotlin {
sourceSets {
val commonMain by getting
val commonTest by getting {
dependencies {
implementation(kotlin("test"))
}
}
val jvmMain by getting
val jvmTest by getting
val jsMain by getting
val jsTest by getting
val nativeMain by getting
val nativeTest by getting
}
}
kotlin {
sourceSets {
commonMain {
}
commonTest {
dependencies {
implementation kotlin('test')
}
}
jvmMain {
}
jvmTest {
}
jsMain {
}
jsTest {
}
nativeMain {
}
nativeTest {
}
}
}
Наборы исходных кодов образуют иерархию, которая используется для совместного использования общего кода. В наборе исходных кодов, используемом несколькими целевыми платформами, можно использовать специфичные для платформы языковые возможности и зависимости, доступные для всех этих платформ.
Например, все возможности Kotlin/Native доступны в наборе исходных кодов desktopMain, который нацелен на платформы Linux (linuxX64), Windows (mingwX64) и macOS (macosX64).
Узнайте, как построить иерархию наборов исходных кодов.
Компиляции
Каждая целевая платформа может иметь одну или несколько компиляций, например, для целей производства и тестирования.
Для каждой целевой платформы стандартные компиляции включают:
mainиtestкомпиляции для JVM, JS и Native целевых платформ.Компиляция для каждого варианта сборки Android для целевых платформ Android.

Каждая компиляция имеет стандартный набор исходных кодов, который содержит исходные коды и зависимости, специфичные для этой компиляции.
Узнайте, как настроить компиляции.
© 2010–2022 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/multiplatform-discover-project.html