Skip to content

Kotlin/Native でサポートされているターゲットとホスト

このドキュメントでは、Kotlin/Native コンパイラでサポートされているターゲットとホストについて説明します。

サポートされているターゲットとホストのリスト、ティアの数、およびそれらの機能は、状況に応じて調整される可能性があります。

ターゲットティア

Kotlin/Native コンパイラは多くの異なるターゲットをサポートしていますが、それらに対するサポートレベルは異なります。 これらのレベルを明確にするため、コンパイラによるサポートの度合いに応じて、ターゲットをいくつかのティア(Tier)に分割しています。

ティアの表には以下の列があります:

  • Gradle ターゲット名は、ターゲットを有効にするために Kotlin マルチプラットフォーム Gradle プラグインで使用されるターゲット名です。

  • ターゲットトリプルは、コンパイラが一般的に使用する <architecture>-<vendor>-<system>-<abi> 構造に従ったターゲット名です。

  • テストの実行は、そのターゲットにおいて、Gradle や IDE でそのままで(out of the box)テストを実行できるかどうかを示します(ターゲット自体のために実行される CI テストと混同しないでください)。

    これは、特定のターゲットに対するネイティブホスト上でのみ利用可能です。例えば、macosArm64iosArm64 のテストは、macOS ARM64 ホスト上でのみ実行できます。

ティア 1

Gradle ターゲット名ターゲットトリプルテストの実行説明
Apple macOS ホストのみ:
macosArm64aarch64-apple-macosApple シリコンプラットフォーム上の Apple macOS 11.0 以降
iosSimulatorArm64aarch64-apple-ios-simulatorApple シリコンプラットフォーム上の Apple iOS シミュレータ 14.0 以降
iosArm64aarch64-apple-iosARM64 プラットフォーム上の Apple iOS および iPadOS 14.0 以降

ティア 2

Gradle ターゲット名ターゲットトリプルテストの実行説明
linuxX64x86_64-unknown-linux-gnux86_64 プラットフォーム上の Linux
linuxArm64aarch64-unknown-linux-gnuARM64 プラットフォーム上の Linux
Apple macOS ホストのみ:
watchosSimulatorArm64aarch64-apple-watchos-simulatorApple シリコンプラットフォーム上の Apple watchOS シミュレータ 7.0 以降
watchosArm32armv7k-apple-watchosARM32 プラットフォーム上の Apple watchOS 7.0 以降
watchosArm64arm64_32-apple-watchosILP32 を備えた ARM64 プラットフォーム上の Apple watchOS 7.0 以降
tvosSimulatorArm64aarch64-apple-tvos-simulatorApple シリコンプラットフォーム上の Apple tvOS シミュレータ 14.0 以降
tvosArm64aarch64-apple-tvosARM64 プラットフォーム上の Apple tvOS 14.0 以降

ティア 3

  • そのターゲットが CI でテストされることは保証されていません。
  • 異なるコンパイラリリース間でのソースおよびバイナリ互換性は保証されませんが、これらのターゲットに対するそのような変更は非常に稀です。

ティア 3 のターゲットは活発に開発されておらず、破壊的な問題が含まれている可能性があります。 注意して使用してください。

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-gnuMinGW 互換レイヤーを使用した 64 ビット Windows 10 以降
Apple macOS ホストのみ:
watchosDeviceArm64aarch64-apple-watchosARM64 プラットフォーム上の Apple watchOS 7.0 以降
iosX64x86_64-apple-ios-simulatorx86-64 プラットフォーム上の Apple iOS シミュレータ 14.0 以降

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

非推奨のターゲット

Kotlin 2.3.20 以降、以下のターゲットは非推奨となりました。

  • macosX64 (x86_64 プラットフォーム上の Apple macOS 11.0 以降)
  • watchosX64 (x86_64 プラットフォーム上の Apple watchOS 7.0 以降の 64 ビットシミュレータ)
  • tvosX64 (x86_64 プラットフォーム上の Apple tvOS 14.0 以降のシミュレータ)

ライブラリ作者の方へ

ライブラリの作者が、Kotlin/Native コンパイラが行う以上のターゲットをテストしたり、より厳格な保証を提供したりすることは推奨されません。ネイティブターゲットのサポートを検討する際は、以下のアプローチを利用できます:

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

Kotlin チームは、kotlinx.coroutineskotlinx.serialization などの公式 Kotlin ライブラリでこのアプローチを採用しています。

ホスト

Kotlin/Native コンパイラは、以下のホストをサポートしています:

ホスト OS最終バイナリのビルド.klib アーティファクトの生成
Apple シリコン(ARM64)上の macOSサポートされているすべてのターゲットサポートされているすべてのターゲット
Intel チップ(x86_64)上の macOSサポートされているすべてのターゲットサポートされているすべてのターゲット
x86_64 アーキテクチャの LinuxApple ターゲットを除く、サポートされているすべてのターゲットサポートされているすべてのターゲット(Apple ターゲットは cinterop 依存関係がない場合のみ)
x86_64 アーキテクチャの Windows(MinGW ツールチェーン)Apple ターゲットを除く、サポートされているすべてのターゲットサポートされているすべてのターゲット(Apple ターゲットは cinterop 依存関係がない場合のみ)

最終バイナリのビルド

最終バイナリを生成するには、サポートされているホスト上でのみサポートされているターゲットに対してコンパイルできます。例えば、FreeBSD や ARM64 アーキテクチャで動作している Linux マシン上ではこれを行えません。

Linux および Windows 上で Apple ターゲット向けの最終バイナリをビルドすることも不可能です。

.klib アーティファクトの生成

一般的に、Kotlin/Native は、サポートされているすべてのターゲットに対して、任意のサポートされているホスト.klib アーティファクトを生成することを許可しています。

ただし、Apple ターゲット向けのアーティファクト生成には、Linux および Windows 上で依然としていくつかの制限があります。プロジェクトで cinterop 依存関係CocoaPods を含む)を使用している場合は、macOS ホストを使用する必要があります。

例えば、cinterop 依存関係がない場合に限り、x86_64 アーキテクチャで動作している Windows マシン上で macosArm64 ターゲット向けの .klib を生成できます。

次のステップ