了解多平台项目结构
探索多平台项目的主要部分:
多平台插件
创建多平台项目时, 项目向导会自动在 build.gradle(.kts
) 文件中应用 kotlin-multiplatform
插件。
也可以手动应用它。
kotlin-multiplatform
插件适用于 Gradle 6.8.3 或更高版本。【Kotlin】
plugins {
kotlin("multiplatform") version "1.9.10"
}
【Groovy】
plugins {
id 'org.jetbrains.kotlin.multiplatform' version '1.9.10'
}
kotlin-multiplatform
插件可配置项目以创建可在多个平台上工作的应用程序或库, 并为在这些平台上构建做好准备。
在 build.gradle(.kts
) 文件中,它在顶层创建 kotlin
扩展, 其中包括目标、源代码集与依赖项的配置。
目标
一个多平台项目针对以不同目标表示的多个平台。 目标是构建的一部分,负责为特定平台(例如 macOS、iOS或Android)构建、测试与打包应用程序。 请参阅支持的平台列表。
创建多平台项目时,会将目标添加到 build.gradle(.kts
) 文件中的 kotlin
块中。
kotlin {
jvm()
js(IR) {
browser {}
}
}
了解如何手动设置目标。
源代码集
该项目包括带有 Kotlin 源代码集的 src
目录, 这些源代码集是 Kotlin 代码文件的集合,以及源代码集的资源、依赖与语言设置。 可以在 Kotlin 编译项中使用一个或多个源代码集目标平台。
每个源代码集目录都包含 Kotlin 代码文件(kotlin
目录)与 resources
。 项目向导会为公共代码以及所有已添加目标的 main
与 test
编译项创建默认源代码集。
源代码集名称区分大小写。
源代码集被添加到顶层 kotlin
块的 sourceSets
块中。 For example, this is the source sets structure you get when creating a multiplatform library with the IntelliJ IDEA project wizard:
【Kotlin】
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
}
}
【Groovy】
kotlin {
sourceSets {
commonMain {
}
commonTest {
dependencies {
implementation kotlin('test')
}
}
jvmMain {
}
jvmTest {
}
jsMain {
}
jsTest {
}
nativeMain {
}
nativeTest {
}
}
}
源代码集形成一个层次结构,用于共享公共代码。 在多个目标之间共享的源代码集中,可以使用所有这些目标可用的平台特有的语言特性与依赖。
例如,所有 Kotlin 原生特性都可以在 desktopMain
源代码集中可用, 该源代码集的目标是 Linux(linuxX64
)、Windows(mingwX64
) 与 macOS(macosX64
) 平台。
了解如何构建源代码集的层次结构。
编译项
每个目标可以具有一个或多个编译项,例如,用于生产与测试目的。
对于每个目标,默认编译项包括:
- 针对 JVM、JS 与原生目标的
main
与test
编译项。 - 针对 Android 目标的每个 Android 构建变体 的编译。
每个编译项都有默认的源代码集,其中包含该编译项特有的源代码与依赖。
了解如何配置编译项。