メインコンテンツまでスキップ

Kotlin/Native のターゲットサポート

Kotlin/Nativeコンパイラーは、非常に多くの異なるターゲットをサポートしていますが、それらすべてに対して同じレベルのサポートを提供することは困難です。このドキュメントでは、Kotlin/Nativeがサポートするターゲットと、コンパイラーによるサポートのレベルに応じて、それらをいくつかの階層に分けて説明します。

注記

階層の数、サポートされるターゲットのリスト、およびその機能は、必要に応じて調整できます。

階層の表で使用されている以下の用語に注意してください。

  • Gradle target name は、ターゲットを有効にするためにKotlin Multiplatform Gradle pluginで使用されるtarget nameです。

  • Target triple は、<architecture>-<vendor>-<system>-<abi> 構造に従ったターゲット名であり、一般的にコンパイラーで使用されます。

  • Running tests は、GradleとIDEでテストを実行するための、すぐに使えるサポートを示します。

    これは、特定のターゲットのネイティブホストでのみ利用可能です。たとえば、macosX64 および iosX64 のテストは、macOS x86-64ホストでのみ実行できます。

Tier 1

Gradle target nameTarget tripleRunning testsDescription
Apple macOS hosts only:
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

Tier 2

  • このターゲットは、コンパイルが可能かどうかを定期的にCIでテストされていますが、実行可能かどうかを自動的にテストされるとは限りません。
  • ソースとコンパイラーのリリース間のバイナリ互換性を提供するために最善を尽くしています。
Gradle target nameTarget tripleRunning testsDescription
linuxX64x86_64-unknown-linux-gnux86_64プラットフォーム上のLinux
linuxArm64aarch64-unknown-linux-gnuARM64プラットフォーム上のLinux
Apple macOS hosts only:
watchosSimulatorArm64aarch64-apple-watchos-simulatorApple Siliconプラットフォーム上のApple watchOSシミュレーター
watchosX64x86_64-apple-watchos-simulatorx86_64プラットフォーム上のApple watchOS 64-bitシミュレーター
watchosArm32armv7k-apple-watchosARM32プラットフォーム上のApple watchOS
watchosArm64arm64_32-apple-watchosILP32を使用したARM64プラットフォーム上のApple watchOS
tvosSimulatorArm64aarch64-apple-tvos-simulatorApple Siliconプラットフォーム上のApple tvOSシミュレーター
tvosX64x86_64-apple-tvos-simulatorx86_64プラットフォーム上のApple tvOSシミュレーター
tvosArm64aarch64-apple-tvosARM64プラットフォーム上のApple tvOS

Tier 3

  • このターゲットは、CIでテストされることは保証されていません。
  • 異なるコンパイラーリリース間のソースおよびバイナリ互換性は保証できませんが、これらのターゲットに対するそのような変更は非常にまれです。
Gradle target nameTarget tripleRunning testsDescription
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-gnuMinGW互換レイヤーを使用した64-bit Windows 7以降
Apple macOS hosts only:
watchosDeviceArm64aarch64-apple-watchosARM64プラットフォーム上のApple watchOS

linuxArm32Hfp ターゲットは非推奨であり、今後のリリースで削除されます。

For library authors

ライブラリの作成者は、Kotlin/Nativeコンパイラーよりも多くのターゲットをテストしたり、より厳密な保証を提供したりすることはお勧めしません。ネイティブターゲットのサポートを検討する際には、次のアプローチを使用できます。

  • tier 1、2、および3のすべてのターゲットをサポートします。
  • すぐにテストを実行できるtier 1および2のターゲットを定期的にテストします。

Kotlinチームは、公式のKotlinライブラリ(たとえば、kotlinx.coroutineskotlinx.serialization)でこのアプローチを使用しています。