Skip to content

Kotlin/Native 目标支持

Kotlin/Native 编译器支持众多不同的目标平台,但很难为所有平台提供同等水平的支持。本文档描述了 Kotlin/Native 支持哪些目标平台,并根据编译器对它们的支持程度将其分为几个层级。

TIP

我们可以根据需要调整层级的数量、支持的目标平台列表及其特性。

请注意层级表格中使用的以下术语:

  • Gradle 目标名称目标名称,用于 Kotlin Multiplatform Gradle 插件以启用目标平台。

  • 目标三元组 (Target triple) 是遵循 <architecture>-<vendor>-<system>-<abi> 结构的目标名称,这种结构常用于 编译器

  • 运行测试 表示在 Gradle 和 IDE 中开箱即用地支持运行测试。

    这仅在特定目标的本机宿主机上可用。例如,您只能在 macOS x86-64 宿主机上运行 macosX64iosX64 测试。

第一层级

  • 该目标在 CI 上定期测试,以确保能够编译和运行。
  • 我们提供编译器版本之间的源代码和 二进制兼容性
Gradle 目标名称目标三元组运行测试描述
仅限 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

第二层级

  • 该目标在 CI 上定期测试,以确保能够编译,但可能不会自动测试其运行能力。
  • 我们会尽力提供编译器版本之间的源代码和 二进制兼容性
Gradle 目标名称目标三元组运行测试描述
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

第三层级

  • 该目标不保证在 CI 上进行测试。
  • 我们无法保证不同编译器版本之间的源代码和二进制兼容性,尽管这些目标的此类更改非常罕见。
Gradle 目标名称目标三元组运行测试描述
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

NOTE

linuxArm32Hfp 目标已弃用,并将在未来版本中移除。

针对库作者

我们不建议库作者测试比 Kotlin/Native 编译器所支持的更多目标平台或提供更严格的保证。在考虑支持原生目标时,您可以使用以下方法:

  • 支持第一、第二和第三层级的所有目标。
  • 定期测试支持开箱即用运行测试的第一和第二层级目标。

Kotlin 团队在官方 Kotlin 库中采用了这种方法,例如 kotlinx.coroutineskotlinx.serialization