Kotlin 语言参考文档 中文版 Help

Kotlin/Native 支持的目标平台

Kotlin/Native 编译器支持大量的编译目标, 但是, 很难对所有编译目标提供同等程度的支持. 本文档描述 Kotlin/Native 支持哪些编译目标, 并根据编译器支持程度的不同, 将它们分为几个层级.

请注意层级列表中使用到的以下名词:

  • Gradle 编译目标名称 是一个 编译目标预设定(preset), 在 Kotlin Multiplatform Gradle plugin 中使用它来启用编译目标.

  • Target triple 是一个符合 <architecture>-<vendor>-<system>-<abi> 格式的编译目标名称, 通常由 编译器 使用.

  • 运行测试 表示是否默认支持在 Gradle 和 IDE 中运行测试.

    对于特定的编译目标, 运行测试只在原生主机上有效. 例如, 你只能在 macOS x86-64 主机上运行 macosX64iosX64 测试.

第 1 层

  • 编译目标在 CI 环境进行过常规测试, 保证能够编译和运行.

  • 我们在编译器发布版之间提供源代码和 二进制兼容性.

Gradle 编译目标名称

Target triple

运行测试

备注

linuxX64

x86_64-unknown-linux-gnu

x86_64 平台上的 Linux

以下仅限于 Apple macOS 主机:

macosX64

x86_64-apple-macos

x86_64 平台上的 Apple macOS

macosArm64

aarch64-apple-macos

Apple Silicon 平台上的 Apple macOS

iosSimulatorArm64

aarch64-apple-ios-simulator

Apple Silicon 平台上的 Apple iOS 模拟器

iosX64

x86_64-apple-ios-simulator

x86-64 平台上的 Apple iOS 模拟器

第 2 层

  • 编译目标在 CI 环境进行过常规测试, 保证能够编译, 但可能没有进行过自动测试, 保证能够运行.

  • 我们尽最大努力来保证在编译器发布版之间提供源代码和 二进制兼容性.

Gradle 编译目标名称

Target triple

运行测试

Description

linuxX64

x86_64-unknown-linux-gnu

x86_64 平台上的 Linux

linuxArm64

aarch64-unknown-linux-gnu

ARM64 平台上的 Linux

以下仅限于 Apple macOS 主机:

watchosSimulatorArm64

aarch64-apple-watchos-simulator

Apple Silicon 平台上的 Apple watchOS 模拟器

watchosX64

x86_64-apple-watchos-simulator

x86_64 平台上的 Apple watchOS 64-bit 模拟器

watchosArm32

armv7k-apple-watchos

ARM32 平台上的 Apple watchOS

watchosArm64

arm64_32-apple-watchos

ARM64 平台上的 with ILP32 Apple watchOS

tvosSimulatorArm64

aarch64-apple-tvos-simulator

Apple Silicon 平台上的 Apple tvOS 模拟器

tvosX64

x86_64-apple-tvos-simulator

x86_64 平台上的 Apple tvOS 模拟器

tvosArm64

aarch64-apple-tvos

ARM64 平台上的 Apple tvOS

iosArm64

aarch64-apple-ios

ARM64 平台上的 Apple iOS 和 iPadOS

第 3 层

  • 编译目标不保证能够在 CI 环境中测试.

  • 我们不能在不同的编译器发布版之间保证源代码和二进制兼容性, 但是, 对这些编译目标的不兼容变更极少发生.

Gradle 编译目标名称

Target triple

运行测试

Description

androidNativeArm32

arm-unknown-linux-androideabi

ARM32 平台上的 Android NDK

androidNativeArm64

aarch64-unknown-linux-android

ARM64 平台上的 Android NDK

androidNativeX86

i686-unknown-linux-android

x86 平台上的 Android NDK

androidNativeX64

x86_64-unknown-linux-android

x86_64 平台上的 Android NDK

mingwX64

x86_64-pc-windows-gnu

Windows 7 和之后版本上的 64 位 MinGW

以下仅限于 Apple macOS 主机:

watchosDeviceArm64

aarch64-apple-watchos

ARM64 平台上的 Apple watchOS

针对库的开发者

对于库的开发者, 我们不推荐测试比 Kotlin/Native 编译器更多的编译目标, 也不推荐支持比 Kotlin/Native 编译器更严格的兼容性保证. 在考虑支持原生编译目标时, 你可以使用以下方案:

  • 支持第 1 层, 第 2 层, 第 3 层的全部编译目标.

  • 第 1 层和第 2 层中的, 默认支持运行测试的常规测试编译目标.

Kotlin 开发组在 Kotlin 官方库的开发中也使用这个方案, 例如, kotlinx.coroutineskotlinx.serialization.

最终更新: 2024/10/17