開始使用 Kotlin/Native
在本教學中,您將學習如何建立一個 Kotlin/Native 應用程式。選擇最適合您的工具來建立您的應用程式:
IDE。在這裡,您可以從版本控制系統複製專案範本並在 IntelliJ IDEA 中使用它。
Gradle 建置系統。為了更好地理解其內部運作原理,請手動為您的專案建立建置檔案。
命令列工具。您可以使用 Kotlin/Native 編譯器(作為標準 Kotlin 發佈的一部分),並直接在命令列工具中建立應用程式。
主控台編譯可能看起來簡單直接,但對於包含數百個檔案和程式庫的大型專案來說,其擴展性不佳。對於這類專案,我們建議使用 IDE 或建置系統。
透過 Kotlin/Native,您可以為不同的目標編譯,包括 Linux、macOS 和 Windows。雖然可以進行跨平台編譯,這表示使用一個平台為另一個平台編譯,但在本教學中,您將以您正在編譯的相同平台為目標。
NOTE
如果您使用 Mac 並希望為 macOS 或其他 Apple 目標建立和執行應用程式,您還需要先安裝 Xcode 命令列工具,啟動它並接受許可條款。
在 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
檔案,這是專案依賴項的版本目錄 (version catalog)。要建立 Kotlin/Native 應用程式,您需要 Kotlin Multiplatform Gradle 插件 (plugin),其版本與 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!" 的程式碼。
按下邊欄中的綠色圖示以執行程式碼:
IntelliJ IDEA 使用 Gradle 任務執行程式碼並將結果輸出到 Run (執行) 索引標籤中:
第一次執行後,IDE 會在頂部建立對應的執行設定 (run configuration):
NOTE
IntelliJ IDEA Ultimate 使用者可以安裝 Native Debugging Support 插件 (plugin),該插件允許偵錯編譯的 native 可執行檔,並自動為匯入的 Kotlin/Native 專案建立執行設定 (run configurations)。
您可以設定 IntelliJ IDEA 以自動建置您的專案:
導覽至 Settings | Build, Execution, Deployment | Compiler。
在 Compiler (編譯器) 頁面上,選擇 Build project automatically (自動建置專案)。
套用變更。
現在,當您在類別檔案中進行變更或儲存檔案 (/) 時,IntelliJ IDEA 會自動執行專案的增量建置 (incremental build)。
更新應用程式
讓我們為您的應用程式添加一個功能,使其可以計算您姓名中的字母數量:
在
Main.kt
檔案中,新增程式碼以讀取輸入。使用readln()
函數讀取輸入值並將其指派給name
變數:kotlinfun main() { // 讀取輸入值。 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()
函數刪除姓名中的空白。使用範圍函數 (scope function)
let
在物件上下文 (object context) 中執行函數。使用字串範本透過新增錢字號並將其括在花括號中(
${it.length}
)將姓名長度插入字串中。it
是lambda 參數的預設名稱。
kotlinfun main() { // 讀取輸入值。 println("Hello, enter your name:") val name = readln() // 計算姓名中的字母數量。 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() { // 讀取輸入值。 println("Hello, enter your name:") val name = readln() // 計算姓名中的字母數量。 name.replace(" ", "").let { println("Your name contains ${it.length} letters") // 印出唯一字母的數量。 println("Your name contains ${it.countDistinctCharacters()} unique letters") } }
執行應用程式。
輸入您的姓名並查看結果:
使用 Gradle
在本節中,您將學習如何使用 Gradle 手動建立 Kotlin/Native 應用程式。Gradle 是 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") { // 在 macOS 上
// linuxArm64("native") // 在 Linux 上
// mingwX64("native") // 在 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') { // 在 macOS 上
// linuxArm64('native') // 在 Linux 上
// mingwX64('native') // 在 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/<目標名稱>[Main|Test]/kotlin
目錄中,其中 Main
用於原始碼,Test
用於測試。<目標名稱>
對應於目標平台(在本例中為 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 發布頁面。
尋找名稱中包含
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 建立應用程式 教學,其中解釋了如何建立 native HTTP 用戶端並與 C 程式庫進行互操作。
- 學習如何為實際的 Kotlin/Native 專案撰寫 Gradle 建置腳本。
- 在文件中閱讀更多關於 Gradle 建置系統的資訊。