跳到主要内容

Kotlin/Native 入门

在本教程中,你将学习如何创建一个 Kotlin/Native 应用程序。选择最适合你的工具,并使用以下方法创建你的应用:

  • IDE中创建。在这里,你可以从版本控制系统克隆项目模板,并在 IntelliJ IDEA 中使用它。
  • Gradle 构建系统。为了更好地了解其内部工作原理,手动为你的项目创建构建文件。
  • 命令行工具。你可以使用 Kotlin/Native 编译器(作为标准 Kotlin 发行版的一部分提供),并直接在命令行工具中创建应用程序。

控制台编译可能看起来简单直接,但它不适用于具有数百个文件和库的大型项目。对于此类项目,我们建议使用 IDE 或构建系统。

使用 Kotlin/Native,你可以为不同的目标平台进行编译,包括 Linux、macOS 和 Windows。虽然可以进行跨平台编译,这意味着使用一个平台为另一个平台进行编译,但在本教程中,你将以编译所在的平台为目标平台。

备注

如果你使用 Mac 并想为 macOS 或其他 Apple 目标创建和运行应用程序,你还需要首先安装 Xcode Command Line Tools,启动它,并接受许可条款。

在 IDE 中创建

在本节中,你将学习如何使用 IntelliJ IDEA 创建 Kotlin/Native 应用程序。你可以使用 Community Edition(社区版)和 Ultimate Edition(旗舰版)。

创建项目

  1. 下载并安装最新版本的 IntelliJ IDEA

  2. 通过在 IntelliJ IDEA 中选择 File | New | Project from Version Control 并使用以下 URL,克隆项目模板

    https://github.com/Kotlin/kmp-native-wizard
  3. 打开 gradle/libs.versions.toml 文件,它是项目依赖的版本目录。要创建 Kotlin/Native 应用程序,你需要 Kotlin Multiplatform Gradle 插件,它的版本与 Kotlin 相同。 确保你使用最新的 Kotlin 版本:

    [versions]
    kotlin = "2.1.20"
  4. 按照建议重新加载 Gradle 文件:

    Load Gradle changes button

有关这些设置的更多信息,请参阅 Multiplatform Gradle DSL 参考

构建并运行应用程序

src/nativeMain/kotlin/ 目录中打开 Main.kt 文件:

  • src 目录包含 Kotlin 源代码文件。
  • Main.kt 文件包含使用 println() 函数打印 "Hello, Kotlin/Native!" 的代码。

按下代码槽中的绿色图标来运行代码:

Run the application

IntelliJ IDEA 使用 Gradle 任务运行代码,并在 Run 选项卡中输出结果:

Application output

首次运行后,IDE 会在顶部创建相应的运行配置:

Gradle run configuration
备注

IntelliJ IDEA Ultimate 用户可以安装 Native Debugging Support 插件,该插件允许调试已编译的 native(原生)可执行文件,并且还可以自动为导入的 Kotlin/Native 项目创建运行配置。

你可以配置 IntelliJ IDEA来自动构建你的项目:

  1. 转到 Settings | Build, Execution, Deployment | Compiler
  2. Compiler 页面上,选择 Build project automatically
  3. 应用更改。

现在,当你更改类文件或保存文件 (Ctrl + S/Cmd + S) 时,IntelliJ IDEA 会自动执行项目的增量构建。

更新应用程序

让我们向你的应用程序添加一个功能,使其可以计算你姓名中的字母数:

  1. Main.kt 文件中,添加代码以读取输入。 使用 readln() 函数读取输入值并将其分配给 name 变量:

    fun main() {
    // Read the input value.
    println("Hello, enter your name:")
    val name = readln()
    }
  2. 要使用 Gradle 运行此应用程序,请在 build.gradle.kts 文件中指定 System.in 作为要使用的输入, 并加载 Gradle 更改:

    kotlin {
    //...
    nativeTarget.apply {
    binaries {
    executable {
    entryPoint = "main"
    runTask?.standardInput = System.`in`
    }
    }
    }
    //...
    }
  3. 消除空格并计算字母:

    • 使用 replace() 函数删除名称中的 空字符。
    • 使用作用域函数 let 在对象上下文中运行该函数。
    • 使用字符串模板通过添加美元符号 $ 并将其括在花括号中${it.length},将你的姓名长度插入到字符串中。 itlambda 参数的默认名称。
    fun main() {
    // Read the input value.
    println("Hello, enter your name:")
    val name = readln()
    // Count the letters in the name.
    name.replace(" ", "").let {
    println("Your name contains ${it.length} letters")
    }
    }
  4. 运行应用程序。

  5. 输入你的姓名并享受结果:

    Application output

现在让我们只计算你姓名中的唯一字母:

  1. Main.kt 文件中,为 String 声明新的扩展函数 .countDistinctCharacters()

    • 使用 .lowercase() 函数将名称转换为小写。
    • 使用 toList() 函数将输入字符串转换为字符列表。
    • 使用 distinct() 函数仅选择你姓名中的不同字符。
    • 使用 count() 函数计算不同的字符。
    fun String.countDistinctCharacters() = lowercase().toList().distinct().count()
  2. 使用 .countDistinctCharacters() 函数计算你姓名中的唯一字母:

    fun String.countDistinctCharacters() = lowercase().toList().distinct().count()

    fun main() {
    // Read the input value.
    println("Hello, enter your name:")
    val name = readln()
    // Count the letters in the name.
    name.replace(" ", "").let {
    println("Your name contains ${it.length} letters")
    // Print the number of unique letters.
    println("Your name contains ${it.countDistinctCharacters()} unique letters")
    }
    }
  3. 运行应用程序。

  4. 输入你的姓名并查看结果:

    Application output

使用 Gradle

在本节中,你将学习如何使用 Gradle 手动创建一个 Kotlin/Native 应用程序。 它是 Kotlin/Native 和 Kotlin Multiplatform 项目的默认构建系统,通常也用于 Java、Android 和其他生态系统。

创建项目文件

  1. 首先,安装兼容版本的 Gradle。 请参阅兼容性表 以检查 Kotlin Gradle 插件 (KGP) 与可用 Gradle 版本的兼容性。

  2. 创建一个空项目目录。 在其中创建一个包含以下内容的 build.gradle(.kts) 文件:

    // build.gradle.kts
    plugins {
    kotlin("multiplatform") version "2.1.20"
    }

    repositories {
    mavenCentral()
    }

    kotlin {
    macosArm64("native") { // on macOS
    // linuxArm64("native") // on Linux
    // mingwX64("native") // on Windows
    binaries {
    executable()
    }
    }
    }

    tasks.withType<Wrapper> {
    gradleVersion = "8.10"
    distributionType = Wrapper.DistributionType.BIN
    }

    你可以使用不同的目标名称,例如 macosArm64iosArm64linuxArm64mingwX64 来定义你正在编译代码的目标。 这些目标名称可以选择将平台名称作为参数,在本例中为 native。 平台名称用于在项目中生成源路径和任务名称。

  3. 在项目目录中创建一个空的 settings.gradle(.kts) 文件。

  4. 创建一个 src/nativeMain/kotlin 目录,并在其中放置一个包含以下内容的 hello.kt 文件:

    fun main() {
    println("Hello, Kotlin/Native!")
    }

按照惯例,所有源代码都位于 src/<target name>[Main|Test]/kotlin 目录中,其中 Main 用于 源代码,Test 用于测试。 <target name> 对应于构建文件中指定的目标平台(在本例中为 native)。

构建并运行项目

  1. 从根项目目录中,运行构建命令:

    ./gradlew nativeBinaries

    此命令将创建 build/bin/native 目录,其中包含两个目录:debugExecutablereleaseExecutable。 它们包含相应的二进制文件。

    默认情况下,二进制文件的名称与项目目录相同。

  2. 要运行项目,请执行以下命令:

    build/bin/native/debugExecutable/<project_name>.kexe

终端将打印 "Hello, Kotlin/Native!"。

在 IDE 中打开项目

现在,你可以在任何支持 Gradle 的 IDE 中打开你的项目。 如果你使用 IntelliJ IDEA:

  1. 选择 File | Open
  2. 选择项目目录,然后单击 Open。 IntelliJ IDEA 会自动检测它是否是 Kotlin/Native 项目。

如果项目遇到问题,IntelliJ IDEA 会在 Build 选项卡中显示错误消息。

使用命令行编译器

在本节中,你将学习如何在命令行工具中使用 Kotlin 编译器创建一个 Kotlin/Native 应用程序。

下载并安装编译器

要安装编译器:

  1. 转到 Kotlin 的 GitHub releases 页面。

  2. 查找名称中带有 kotlin-native 的文件,并下载一个适合你操作系统的文件, 例如 kotlin-native-prebuilt-linux-x86_64-2.0.21.tar.gz

  3. 将归档文件解压缩到你选择的目录。

  4. 打开你的 shell 配置文件,并将编译器 /bin 目录的路径添加到 PATH 环境变量:

    export PATH="/<path to the compiler>/kotlin-native/bin:$PATH"

虽然编译器输出没有依赖项或虚拟机要求,但编译器本身 需要 Java 1.8 或更高版本的运行时。 它受 JDK 8 (JAVA SE 8) 或更高版本支持。

创建程序

选择一个工作目录并创建一个名为 hello.kt 的文件。 使用以下代码更新它:

fun main() {
println("Hello, Kotlin/Native!")
}

从控制台编译代码

要编译应用程序,请使用下载的编译器执行以下命令:

kotlinc-native hello.kt -o hello

-o 选项的值指定输出文件的名称,因此此调用将在 macOS 和 Linux 上生成 hello.kexe 二进制文件 (在 Windows 上生成 hello.exe)。

有关可用选项的完整列表,请参阅 Kotlin 编译器选项

运行程序

要运行程序,请在你的命令行工具中,导航到包含二进制文件的目录并运行 以下命令:

./hello.kexe

应用程序将 "Hello, Kotlin/Native" 打印到标准输出。

接下来做什么?