Поддерживаемые целевые платформы и хосты Kotlin/Native
В этом документе описано, какие целевые платформы и хосты поддерживаются компилятором Kotlin/Native.
Уровни целевых платформ
Компилятор Kotlin/Native поддерживает различные целевые платформы, однако уровень поддержки для них отличается. Чтобы прояснить эти уровни, мы разделили целевые платформы на несколько уровней в зависимости от того, насколько хорошо компилятор их поддерживает.
Таблицы уровней содержат следующие столбцы:
Имя целевой платформы в Gradle — это имя целевой платформы, которое используется в плагине Kotlin Multiplatform для Gradle, чтобы включить целевую платформу.
Тройка целевой платформы — это имя целевой платформы в соответствии со структурой
<architecture>-<vendor>-<system>-<abi>, которую обычно используют компиляторы.-
Запуск тестов показывает, позволяет ли целевая платформа запускать тесты в Gradle и IDE без дополнительной настройки (не путайте с CI-тестами, которые запускаются для самих целевых платформ).
Это доступно только на нативном хосте для конкретной целевой платформы. Например, тесты
macosArm64иiosArm64можно запускать только на хосте macOS ARM64.
Уровень 1
Целевая платформа регулярно тестируется в CI на возможность компиляции и запуска.
Мы обеспечиваем совместимость исходного кода и двоичных файлов между выпусками компилятора.
Имя целевой платформы в Gradle |
Тройка целевой платформы |
Запуск тестов |
Описание |
|---|---|---|---|
Только хосты Apple macOS: |
|||
|
|
✅ |
Apple macOS 12.0 и более поздние версии на платформах Apple Silicon |
|
|
✅ |
Симулятор Apple iOS 15.0 и более поздних версий на платформах Apple Silicon |
|
|
Apple iOS и iPadOS 15.0 и более поздние версии на платформах ARM64 |
Уровень 2
Целевая платформа регулярно тестируется в CI на возможность компиляции, однако возможность запуска может не проверяться автоматически.
Мы прилагаем все усилия, чтобы обеспечить совместимость исходного кода и двоичных файлов между выпусками компилятора.
Имя целевой платформы в Gradle |
Тройка целевой платформы |
Запуск тестов |
Описание |
|---|---|---|---|
|
|
✅ |
Linux на платформах x86_64 |
|
|
Linux на платформах ARM64 |
|
Только хосты Apple macOS: |
|||
|
|
✅ |
Симулятор Apple watchOS 8.0 и более поздних версий на платформах Apple Silicon |
|
|
Apple watchOS 8.0 и более поздние версии на платформах ARM64 с ILP32 |
|
|
|
✅ |
Симулятор Apple tvOS 15.0 и более поздних версий на платформах Apple Silicon |
|
|
Apple tvOS 15.0 и более поздние версии на платформах ARM64 |
Уровень 3
Не гарантируется, что целевая платформа будет тестироваться в CI.
Мы не можем гарантировать совместимость исходного кода и двоичных файлов между различными выпусками компилятора, хотя такие изменения для этих целевых платформ встречаются довольно редко.
Имя целевой платформы в Gradle |
Тройка целевой платформы |
Запуск тестов |
Описание |
|---|---|---|---|
|
|
Android NDK на платформах ARM32 |
|
|
|
Android NDK на платформах ARM64 |
|
|
|
Android NDK на платформах x86 |
|
|
|
Android NDK на платформах x86_64 |
|
|
|
✅ |
64-разрядная Windows 10 и более поздние версии с использованием слоя совместимости MinGW |
Только хосты Apple macOS: |
|||
|
|
Apple watchOS 8.0 и более поздние версии на платформах ARM64 |
|
|
|
Симулятор Apple iOS 15.0 и более поздних версий на платформах x86-64 |
Устаревшие целевые платформы
Следующие целевые платформы устарели и запланированы к удалению:
Целевая платформа |
Начало вывода из эксплуатации |
Описание |
|---|---|---|
|
Kotlin 2.4.20 |
Устройства Apple watchOS на платформах ARM32 |
|
Kotlin 2.3.20 |
Apple macOS на платформах x86_64 |
|
Kotlin 2.3.20 |
64-разрядный симулятор Apple watchOS на платформах x86_64 |
|
Kotlin 2.3.20 |
Симулятор Apple tvOS на платформах x86_64 |
|
Kotlin 1.8.20 |
Linux на платформах ARM32 |
Поддержка более ранних версий целевых платформ Apple
В настоящее время минимальные версии целевых платформ Apple, поддерживаемые по умолчанию, следующие:
Для iOS и tvOS — 15.0.
Для macOS — 12.0.
Для watchOS — 8.0.
Если вашему проекту необходимо поддерживать версию ниже указанной по умолчанию, используйте параметр freeCompilerArgs в файле сборки:
kotlin {
targets.withType<org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget>().configureEach {
binaries.configureEach {
freeCompilerArgs += "-Xoverride-konan-properties=minVersion.ios=14.0"
freeCompilerArgs += "-Xoverride-konan-properties=minVersion.macos=11.0"
freeCompilerArgs += "-Xoverride-konan-properties=minVersion.tvos=14.0"
freeCompilerArgs += "-Xoverride-konan-properties=minVersion.watchos=7.0"
}
}
}
Для авторов библиотек
Мы не рекомендуем авторам библиотек тестировать больше целевых платформ или предоставлять более строгие гарантии, чем компилятор Kotlin/Native. При рассмотрении поддержки нативных целевых платформ можно придерживаться следующего подхода:
Поддерживайте все целевые платформы уровней 1, 2 и 3.
Регулярно тестируйте целевые платформы уровней 1 и 2, на которых тесты запускаются без дополнительной настройки.
Команда Kotlin придерживается этого подхода в официальных библиотеках Kotlin, например, в kotlinx.coroutines и kotlinx.serialization.
Хосты
Компилятор Kotlin/Native поддерживает следующие хосты:
ОС хоста |
Сборка готовых двоичных файлов |
Создание артефактов |
|---|---|---|
macOS на Apple Silicon (ARM64) |
Любая поддерживаемая целевая платформа |
Любая поддерживаемая целевая платформа |
macOS на процессорах Intel (x86_64) |
Любая поддерживаемая целевая платформа |
Любая поддерживаемая целевая платформа |
Linux с архитектурой x86_64 |
Любая поддерживаемая целевая платформа, кроме целевых платформ Apple |
Любая поддерживаемая целевая платформа; целевые платформы Apple — только без зависимостей cinterop |
Windows (инструментарий MinGW) с архитектурой x86_64 |
Любая поддерживаемая целевая платформа, кроме целевых платформ Apple |
Любая поддерживаемая целевая платформа; целевые платформы Apple — только без зависимостей cinterop |
Сборка готовых двоичных файлов
Для создания готовых двоичных файлов компилировать можно только для поддерживаемых целевых платформ и только на поддерживаемых хостах. Например, это невозможно сделать во FreeBSD или на компьютере с Linux и архитектурой ARM64.
Собирать готовые двоичные файлы для целевых платформ Apple в Linux и Windows также невозможно.
Создание артефактов .klib
В целом Kotlin/Native позволяет создавать артефакты .klib для поддерживаемых целевых платформ на любом поддерживаемом хосте.
Однако создание артефактов для целевых платформ Apple в Linux и Windows по-прежнему имеет некоторые ограничения. Если в проекте используются зависимости cinterop (в том числе CocoaPods), необходимо использовать хост macOS.
Например, создать .klib для целевой платформы macosArm64 на компьютере с Windows и архитектурой x86_64 можно только при отсутствии зависимостей cinterop.
Что дальше?
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/native-target-support.html