跳至主要内容

Kotlin/Native 目標平台支援

Kotlin/Native 編譯器支援大量的不同目標,儘管很難為所有目標提供相同等級的支援。本文檔描述了 Kotlin/Native 支援哪些目標,並根據編譯器對它們的支援程度將其分為幾個層級(tiers)。

備註

我們可以根據情況調整層級數量、支援目標的列表及其特性。

請注意層級表格中使用的以下術語:

  • **Gradle 目標名稱(Gradle target name)**是用於 Kotlin Multiplatform Gradle 外掛程式中啟用目標的目標名稱(target name)

  • **目標三元組(Target triple)**是根據 <architecture>-<vendor>-<system>-<abi> 結構的目標名稱,通常被編譯器使用。

  • **執行測試(Running tests)**表示對在 Gradle 和 IDE 中執行測試的開箱即用支援。

    這僅適用於特定目標的原生主機。例如,您只能在 macOS x86-64 主機上執行 macosX64iosX64 測試。

層級 1 (Tier 1)

  • 目標在 CI 上定期測試,以確保能夠編譯和執行。
  • 我們在編譯器版本之間提供原始碼和二進位制相容性
Gradle 目標名稱(Gradle target name)目標三元組(Target triple)執行測試(Running tests)描述(Description)
僅限 Apple macOS 主機:
macosX64x86_64-apple-macosx86_64 平台上的 Apple macOS
macosArm64aarch64-apple-macosApple Silicon 平台上的 Apple macOS
iosSimulatorArm64aarch64-apple-ios-simulatorApple Silicon 平台上的 Apple iOS 模擬器
iosX64x86_64-apple-ios-simulatorx86-64 平台上的 Apple iOS 模擬器
iosArm64aarch64-apple-iosARM64 平台上的 Apple iOS 和 iPadOS

層級 2 (Tier 2)

  • 目標在 CI 上定期測試,以確保能夠編譯,但可能不會自動測試其執行能力。
  • 我們盡最大努力在編譯器版本之間提供原始碼和二進位制相容性
Gradle 目標名稱(Gradle target name)目標三元組(Target triple)執行測試(Running tests)描述(Description)
linuxX64x86_64-unknown-linux-gnux86_64 平台上的 Linux
linuxArm64aarch64-unknown-linux-gnuARM64 平台上的 Linux
僅限 Apple macOS 主機:
watchosSimulatorArm64aarch64-apple-watchos-simulatorApple Silicon 平台上的 Apple watchOS 模擬器
watchosX64x86_64-apple-watchos-simulatorx86_64 平台上 Apple watchOS 64 位元模擬器
watchosArm32armv7k-apple-watchosARM32 平台上的 Apple watchOS
watchosArm64arm64_32-apple-watchos具有 ILP32 的 ARM64 平台上的 Apple watchOS
tvosSimulatorArm64aarch64-apple-tvos-simulatorApple Silicon 平台上的 Apple tvOS 模擬器
tvosX64x86_64-apple-tvos-simulatorx86_64 平台上的 Apple tvOS 模擬器
tvosArm64aarch64-apple-tvosARM64 平台上的 Apple tvOS

層級 3 (Tier 3)

  • 不保證目標會在 CI 上進行測試。
  • 我們無法保證不同編譯器版本之間的原始碼和二進位制相容性,儘管這些目標的此類變更非常罕見。
Gradle 目標名稱(Gradle target name)目標三元組(Target triple)執行測試(Running tests)描述(Description)
androidNativeArm32arm-unknown-linux-androideabiARM32 平台上的 Android NDK
androidNativeArm64aarch64-unknown-linux-androidARM64 平台上的 Android NDK
androidNativeX86i686-unknown-linux-androidx86 平台上的 Android NDK
androidNativeX64x86_64-unknown-linux-androidx86_64 平台上的 Android NDK
mingwX64x86_64-pc-windows-gnu使用 MinGW 相容層的 64 位元 Windows 7 及更高版本
僅限 Apple macOS 主機:
watchosDeviceArm64aarch64-apple-watchosARM64 平台上的 Apple watchOS

linuxArm32Hfp 目標已棄用,並將在未來的版本中移除。

對於程式庫作者

我們不建議程式庫作者測試比 Kotlin/Native 編譯器更多的目標或提供更嚴格的保證。在考慮對原生目標的支援時,您可以使用以下方法:

  • 支援來自層級 1、2 和 3 的所有目標。
  • 定期測試來自層級 1 和 2 的支援開箱即用執行測試的目標。

Kotlin 團隊在官方 Kotlin 程式庫中使用此方法,例如 kotlinx.coroutineskotlinx.serialization