Создание библиотеки Kotlin для мультиплатформенной разработки
При создании библиотеки Kotlin подумайте о том, чтобы собрать и опубликовать её с поддержкой Kotlin Multiplatform. Это расширит аудиторию вашей библиотеки и обеспечит её совместимость с проектами, предназначенными для нескольких платформ.
В следующих разделах приведены рекомендации, которые помогут эффективно создавать библиотеки Kotlin Multiplatform.
Расширьте охват
Чтобы ваша библиотека была доступна в качестве зависимости для максимально возможного числа проектов, постарайтесь поддерживать как можно больше целевых платформ Kotlin Multiplatform.
Если ваша библиотека не поддерживает платформы, используемые мультиплатформенным проектом, будь то библиотека или приложение, такому проекту будет сложно зависеть от вашей библиотеки. В этом случае проект сможет использовать вашу библиотеку на одних платформах, но для других ему придётся реализовать отдельные решения, либо он выберет другую библиотеку, поддерживающую все необходимые платформы.
Чтобы упростить создание артефактов, используйте кросс-компиляцию, чтобы публиковать библиотеки Kotlin Multiplatform с любого хоста. Это позволяет создавать артефакты .klib для целевых платформ Apple без компьютера Apple.
Проектируйте API для использования из общего кода
При создании библиотеки проектируйте API так, чтобы их можно было использовать из общего кода Kotlin, а не реализовывайте их отдельно для каждой платформы.
По возможности задавайте разумные конфигурации по умолчанию и включайте параметры конфигурации для конкретных платформ. Хорошие настройки по умолчанию позволяют использовать API библиотеки из общего кода Kotlin, не реализуя платформенные варианты для настройки библиотеки.
Размещайте API в наиболее широком подходящем исходном наборе, соблюдая следующий порядок приоритетов:
Исходный набор
commonMain: API в исходном набореcommonMainдоступны на всех платформах, которые поддерживает библиотека. Старайтесь размещать здесь большую часть API библиотеки.Промежуточные исходные наборы: Если некоторые платформы не поддерживают определённые API, используйте промежуточные исходные наборы для целевых платформ. Например, можно создать исходный набор
concurrentдля целевых платформ с поддержкой многопоточности или исходный наборnonJvmдля всех платформ, отличных от JVM.Исходные наборы для конкретных платформ: Для платформенных API используйте такие исходные наборы, как
androidMain.
Обеспечьте единообразное поведение на всех платформах
Чтобы библиотека вела себя одинаково на всех поддерживаемых платформах, API мультиплатформенной библиотеки должны принимать одинаковый диапазон допустимых входных данных, выполнять одни и те же действия и возвращать одинаковые результаты на всех платформах. Аналогично библиотека должна единообразно обрабатывать недопустимые входные данные и одинаково сообщать об ошибках или выбрасывать исключения на всех платформах.
Неодинаковое поведение затрудняет использование библиотеки и вынуждает пользователей добавлять в общий код условную логику для обработки платформенных различий.
С помощью объявлений expect и actual можно объявлять функции в общем коде и предоставлять для них платформенные реализации с полным доступом к нативным API каждой платформы. Для надёжного использования из общего кода эти реализации также должны вести себя одинаково.
Если API ведут себя одинаково на всех платформах, их достаточно задокументировать один раз в исходном наборе commonMain.
Тестируйте на всех платформах
Для мультиплатформенных библиотек можно писать мультиплатформенные тесты в общем коде и запускать их на всех платформах. Регулярный запуск этого общего набора тестов на поддерживаемых платформах поможет убедиться в корректной и единообразной работе библиотеки.
Регулярное тестирование целевых платформ Kotlin/Native на всех публикуемых платформах может быть непростой задачей. Однако для обеспечения более широкой совместимости рассмотрите возможность публикации библиотеки для всех поддерживаемых ею целевых платформ, используя поэтапный подход при проверке совместимости.
Используйте библиотеку kotlin-test, чтобы писать тесты в общем коде и запускать их с помощью платформенных средств выполнения тестов.
Учитывайте пользователей, не работающих с Kotlin
Kotlin Multiplatform обеспечивает взаимодействие с нативными API и языками на всех поддерживаемых целевых платформах. При создании библиотеки Kotlin Multiplatform подумайте, может ли пользователям понадобиться использовать типы и объявления вашей библиотеки из языков, отличных от Kotlin.
Например, если некоторые типы вашей библиотеки будут доступны в коде Swift благодаря взаимодействию языков, спроектируйте их так, чтобы ими было удобно пользоваться в Swift. В Kotlin-Swift interopedia приведены полезные сведения о том, как выглядят API Kotlin при вызове из Swift.
Продвигайте свою библиотеку
Вы можете разместить свою библиотеку на klibs.io — платформе для поиска, где разработчики находят библиотеки Kotlin Multiplatform и оценивают их.
На klibs.io автоматически размещаются библиотеки, соответствующие критериям платформы. Чтобы узнать, подходит ли ваша библиотека, см. раздел Часто задаваемые вопросы.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/api-guidelines-build-for-multiplatform.html