了解多平台项目结构
探索多平台项目的主要部分:
多平台插件
创建多平台项目时, 项目向导会自动在 build.gradle(.kts) 文件中应用 kotlin-multiplatform 插件。
也可以手动应用它。
kotlin-multiplatform插件适用于 Gradle 6.8.3 或更高版本。
【Kotlin】
1. plugins {
2. kotlin("multiplatform") version "1.9.10"
3. }
【Groovy】
1. plugins {
2. id 'org.jetbrains.kotlin.multiplatform' version '1.9.10'
3. }
kotlin-multiplatform 插件可配置项目以创建可在多个平台上工作的应用程序或库, 并为在这些平台上构建做好准备。
在 build.gradle(.kts) 文件中,它在顶层创建 kotlin 扩展, 其中包括目标、源代码集与依赖项的配置。
目标
一个多平台项目针对以不同目标表示的多个平台。 目标是构建的一部分,负责为特定平台(例如 macOS、iOS或Android)构建、测试与打包应用程序。 请参阅支持的平台列表。
创建多平台项目时,会将目标添加到 build.gradle(.kts) 文件中的 kotlin 块中。
1. kotlin {
2. jvm()
3. js(IR) {
4. browser {}
5. }
6. }
了解如何手动设置目标。
源代码集
该项目包括带有 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】
1. kotlin {
2. sourceSets {
3. val commonMain by getting
4. val commonTest by getting {
5. dependencies {
6. implementation(kotlin("test"))
7. }
8. }
9. val jvmMain by getting
10. val jvmTest by getting
11. val jsMain by getting
12. val jsTest by getting
13. val nativeMain by getting
14. val nativeTest by getting
15. }
16. }
【Groovy】
1. kotlin {
2. sourceSets {
3. commonMain {
5. }
6. commonTest {
7. dependencies {
8. implementation kotlin('test')
9. }
10. }
11. jvmMain {
13. }
14. jvmTest {
16. }
17. jsMain {
19. }
20. jsTest {
22. }
23. nativeMain {
25. }
26. nativeTest {
28. }
29. }
30. }
源代码集形成一个层次结构,用于共享公共代码。 在多个目标之间共享的源代码集中,可以使用所有这些目标可用的平台特有的语言特性与依赖。
例如,所有 Kotlin 原生特性都可以在 desktopMain 源代码集中可用, 该源代码集的目标是 Linux(linuxX64)、Windows(mingwX64) 与 macOS(macosX64) 平台。

了解如何构建源代码集的层次结构。
编译项
每个目标可以具有一个或多个编译项,例如,用于生产与测试目的。
对于每个目标,默认编译项包括:
- 针对 JVM、JS 与原生目标的
main与test编译项。 - 针对 Android 目标的每个 Android 构建变体 的编译。

每个编译项都有默认的源代码集,其中包含该编译项特有的源代码与依赖。
了解如何配置编译项。
