Понимание структуры проекта Multiplatform
Рассмотрите основные части вашего проекта Multiplatform:
Плагин Multiplatform
При создании проекта Multiplatform мастер проекта автоматически применяет плагин kotlin-multiplatform Gradle в файле build.gradle(.kts).
Вы также можете применить его вручную.
plugins {
kotlin("multiplatform") version "1.6.20"
}
plugins {
id 'org.jetbrains.kotlin.multiplatform' version '1.6.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.
kotlin {
sourceSets {
val commonMain by getting { /* ... */ }
val commonTest by getting { /* ... */ }
val jvmMain by getting { /* ... */ }
val jvmTest by getting { /* ... */ }
val jsMain by getting { /* ... */ }
val jsTest by getting { /* ... */ }
}
}
kotlin {
sourceSets {
commonMain { /* ... */}
commonTest { /* ... */}
jvmMain { /* ... */}
jvmTest { /* ... */ }
jsMain { /* ... */}
jsTest { /* ... */}
}
}
Наборы исходных файлов образуют иерархию, которая используется для совместного использования общего кода. В наборе исходных файлов, используемом несколькими целями, вы можете использовать платформозависимые функции языка и зависимости, доступные для всех этих целей.
Например, все функции 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