Kotlin/Native 入门
在本教程中,你将学习如何创建一个 Kotlin/Native 应用程序。选择最适合你的工具来创建应用程序,你可以使用:
IDE。在此,你可以从版本控制系统克隆项目模板并在 IntelliJ IDEA 中使用它。
Gradle 构建系统。为了更好地理解内部工作原理,你可以手动为项目创建构建文件。
命令行工具。你可以使用 Kotlin/Native 编译器,它作为标准 Kotlin 发行版的一部分提供,并直接在命令行工具中创建应用程序。
控制台编译可能看起来简单直接,但对于包含数百个文件和库的大型项目而言,其可伸缩性不佳。对于此类项目,我们建议使用 IDE 或构建系统。
借助 Kotlin/Native,你可以针对不同的目标平台进行编译,包括 Linux、macOS 和 Windows。虽然可以进行跨平台编译(即使用一个平台为另一个平台编译),但本教程中,你将针对与编译时相同的平台。
NOTE
如果你使用 Mac 并希望为 macOS 或其他 Apple 目标平台创建并运行应用程序,你还需要先安装 Xcode Command Line Tools,启动它并接受许可条款。
在 IDE 中
在本节中,你将学习如何使用 IntelliJ IDEA 创建 Kotlin/Native 应用程序。你可以使用 Community Edition 和 Ultimate Edition。
创建项目
下载并安装最新版本的 IntelliJ IDEA。
通过在 IntelliJ IDEA 中选择 File | New | Project from Version Control 并使用此 URL,克隆项目模板:
nonehttps://github.com/Kotlin/kmp-native-wizard
打开
gradle/libs.versions.toml
文件,这是项目依赖项的版本目录。要创建 Kotlin/Native 应用程序,你需要 Kotlin Multiplatform Gradle 插件,其版本与 Kotlin 相同。确保你使用最新的 Kotlin 版本:none[versions] kotlin = "2.1.21"
按照建议重新加载 Gradle 文件:
有关这些设置的更多信息,请参阅 Multiplatform Gradle DSL 参考。
构建并运行应用程序
打开 src/nativeMain/kotlin/
目录中的 Main.kt
文件:
src
目录包含 Kotlin 源文件。Main.kt
文件包含使用println()
函数打印 "Hello, Kotlin/Native!" 的代码。
点击 gutter(行号旁边)中的绿色图标来运行代码:
IntelliJ IDEA 使用 Gradle 任务运行代码,并在 Run 选项卡中输出结果:
首次运行后,IDE 会在顶部创建相应的运行配置:
NOTE
IntelliJ IDEA Ultimate 用户可以安装 Native Debugging Support 插件,该插件允许调试编译后的原生可执行文件,并自动为导入的 Kotlin/Native 项目创建运行配置。
你可以配置 IntelliJ IDEA 自动构建项目:
前往 Settings | Build, Execution, Deployment | Compiler。
在 Compiler 页面上,选择 Build project automatically。
应用更改。
现在,当你修改类文件或保存文件(/)时,IntelliJ IDEA 会自动执行项目的增量构建。
更新应用程序
让我们为你的应用程序添加一个功能,使其能够统计你姓名中的字母数量:
在
Main.kt
文件中,添加代码来读取输入。使用readln()
函数读取输入值并将其赋值给name
变量:kotlinfun main() { // Read the input value. println("Hello, enter your name:") val name = readln() }
要使用 Gradle 运行此应用程序,请在
build.gradle.kts
文件中将System.in
指定为输入,并加载 Gradle 更改:kotlinkotlin { //... nativeTarget.apply { binaries { executable { entryPoint = "main" runTask?.standardInput = System.`in` } } } //... }
{initial-collapse-state="collapsed" collapsible="true" collapsed-title="runTask?.standardInput = System.
in
"}消除空格并计算字母数量:
使用
replace()
函数删除姓名中的空字符。使用作用域函数
let
在对象上下文中运行函数。使用字符串模板通过添加美元符号并将其括在花括号中——
${it.length}
,将姓名长度插入到字符串中。it
是lambda 参数的默认名称。
kotlinfun 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") } }
运行应用程序。
输入你的姓名并查看结果:
现在,我们只计算你姓名中唯一字母的数量:
在
Main.kt
文件中,为String
声明新的扩展函数.countDistinctCharacters()
:使用
.lowercase()
函数将姓名转换为小写。使用
toList()
函数将输入字符串转换为字符列表。使用
distinct()
函数选择姓名中唯一的字符。使用
count()
函数计算唯一字符的数量。
kotlinfun String.countDistinctCharacters() = lowercase().toList().distinct().count()
使用
.countDistinctCharacters()
函数计算你姓名中唯一字母的数量:kotlinfun 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") } }
运行应用程序。
输入你的姓名并查看结果:
使用 Gradle
在本节中,你将学习如何使用 Gradle 手动创建一个 Kotlin/Native 应用程序。它是 Kotlin/Native 和 Kotlin Multiplatform 项目的默认构建系统,也常用于 Java、Android 和其他生态系统中。
创建项目文件
首先,安装兼容的 Gradle 版本。请参阅兼容性表格以检查 Kotlin Gradle 插件 (KGP) 与可用 Gradle 版本的兼容性。
创建一个空的项目目录。在此目录中,创建一个
build.gradle(.kts)
文件,内容如下:
// build.gradle.kts
plugins {
kotlin("multiplatform") version "2.1.21"
}
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
}
```
```groovy [Groovy]
// build.gradle
plugins {
id 'org.jetbrains.kotlin.multiplatform' version '2.1.21'
}
repositories {
mavenCentral()
}
kotlin {
macosArm64('native') { // on macOS
// linuxArm64('native') // on Linux
// mingwX64('native') // on Windows
binaries {
executable()
}
}
}
wrapper {
gradleVersion = '8.10'
distributionType = 'BIN'
}
```
你可以使用不同的[目标名称](native-target-support.md),例如 `macosArm64`、`iosArm64` `linuxArm64` 和 `mingwX64`,来定义你编译代码的目标平台。这些目标名称可以选择性地将平台名称作为参数,在本例中为 `native`。平台名称用于生成项目中的源路径和任务名称。
在项目目录中创建一个空的
settings.gradle(.kts)
文件。创建一个
src/nativeMain/kotlin
目录,并在其中放置一个hello.kt
文件,内容如下:kotlinfun main() { println("Hello, Kotlin/Native!") }
按照约定,所有源文件都位于 src/<target name>[Main|Test]/kotlin
目录中,其中 Main
用于源代码,Test
用于测试。<target name>
对应于目标平台(本例中为 native
),如构建文件中所指定。
构建并运行项目
在项目根目录中,运行构建命令:
bash./gradlew nativeBinaries
此命令将创建
build/bin/native
目录,其中包含两个子目录:debugExecutable
和releaseExecutable
。它们包含相应的二进制文件。默认情况下,二进制文件的名称与项目目录相同。
要运行项目,请执行以下命令:
bashbuild/bin/native/debugExecutable/<project_name>.kexe
终端将打印 "Hello, Kotlin/Native!"。
在 IDE 中打开项目
现在,你可以在任何支持 Gradle 的 IDE 中打开你的项目。如果你使用 IntelliJ IDEA:
选择 File | Open。
选择项目目录,然后点击 Open。
IntelliJ IDEA 会自动检测它是否是一个 Kotlin/Native 项目。
如果项目遇到问题,IntelliJ IDEA 会在 Build 选项卡中显示错误消息。
使用命令行编译器
在本节中,你将学习如何使用命令行工具中的 Kotlin 编译器创建 Kotlin/Native 应用程序。
下载并安装编译器
要安装编译器:
前往 Kotlin 的 GitHub releases 页面。
查找名称中包含
kotlin-native
的文件,并下载一个适合你操作系统的文件,例如kotlin-native-prebuilt-linux-x86_64-2.0.21.tar.gz
。将压缩包解压到你选择的目录。
打开你的 shell 配置文件,并将编译器
/bin
目录的路径添加到PATH
环境变量中:bashexport 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, Kotlin/Native" 打印到标准输出。
接下来
- 完成 使用 C 互操作和 libcurl 创建应用程序 教程,该教程解释了如何创建原生 HTTP 客户端并与 C 库进行互操作。
- 了解如何为实际的 Kotlin/Native 项目编写 Gradle 构建脚本。
- 阅读文档中有关 Gradle 构建系统的更多信息。