Kotlin/Native 目标支持
Kotlin/Native 编译器支持众多不同的目标平台,但很难为所有平台提供同等水平的支持。本文档描述了 Kotlin/Native 支持哪些目标平台,并根据编译器对它们的支持程度将其分为几个层级。
TIP
我们可以根据需要调整层级的数量、支持的目标平台列表及其特性。
请注意层级表格中使用的以下术语:
Gradle 目标名称 是 目标名称,用于 Kotlin Multiplatform Gradle 插件以启用目标平台。
目标三元组 (Target triple) 是遵循
<architecture>-<vendor>-<system>-<abi>
结构的目标名称,这种结构常用于 编译器。运行测试 表示在 Gradle 和 IDE 中开箱即用地支持运行测试。
这仅在特定目标的本机宿主机上可用。例如,您只能在 macOS x86-64 宿主机上运行
macosX64
和iosX64
测试。
第一层级
- 该目标在 CI 上定期测试,以确保能够编译和运行。
- 我们提供编译器版本之间的源代码和 二进制兼容性。
Gradle 目标名称 | 目标三元组 | 运行测试 | 描述 |
---|---|---|---|
仅限 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 模拟器 |
iosArm64 | aarch64-apple-ios | ARM64 平台上的 Apple iOS 和 iPadOS |
第二层级
- 该目标在 CI 上定期测试,以确保能够编译,但可能不会自动测试其运行能力。
- 我们会尽力提供编译器版本之间的源代码和 二进制兼容性。
Gradle 目标名称 | 目标三元组 | 运行测试 | 描述 |
---|---|---|---|
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 位模拟器 |
watchosArm32 | armv7k-apple-watchos | ARM32 平台上的 Apple watchOS | |
watchosArm64 | arm64_32-apple-watchos | 采用 ILP32 的 ARM64 平台上的 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 |
第三层级
- 该目标不保证在 CI 上进行测试。
- 我们无法保证不同编译器版本之间的源代码和二进制兼容性,尽管这些目标的此类更改非常罕见。
Gradle 目标名称 | 目标三元组 | 运行测试 | 描述 |
---|---|---|---|
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 | ✅ | 使用 MinGW 兼容层的 64 位 Windows 7 及更高版本 |
仅限 Apple macOS 宿主机: | |||
watchosDeviceArm64 | aarch64-apple-watchos | ARM64 平台上的 Apple watchOS |
NOTE
linuxArm32Hfp
目标已弃用,并将在未来版本中移除。
针对库作者
我们不建议库作者测试比 Kotlin/Native 编译器所支持的更多目标平台或提供更严格的保证。在考虑支持原生目标时,您可以使用以下方法:
- 支持第一、第二和第三层级的所有目标。
- 定期测试支持开箱即用运行测试的第一和第二层级目标。
Kotlin 团队在官方 Kotlin 库中采用了这种方法,例如 kotlinx.coroutines 和 kotlinx.serialization。