Skip to content

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

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

TIP

ティアの数、サポートされるターゲットのリスト、およびそれらの機能は随時調整する可能性があります。

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

  • Gradle target name は、Kotlin Multiplatform Gradleプラグインでターゲットを有効にするために使用されるターゲット名です。

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

  • Running tests は、GradleおよびIDEでテストを実行するための標準でのサポートを示します。

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

Tier 1

  • このターゲットは、コンパイルと実行ができることをCIで定期的にテストされています。
  • コンパイラのリリース間でソースとバイナリの互換性を提供します。
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

NOTE

linuxArm32Hfpターゲットは非推奨であり、将来のリリースで削除される予定です。

ライブラリ作者向け

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

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

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