Создание библиотеки Kotlin Multiplatform — руководство
В этом руководстве вы узнаете, как создать мультиплатформенную библиотеку в IntelliJ IDEA, опубликовать её в локальном репозитории Maven и добавить в качестве зависимости в другой проект.
Руководство основано на нашем шаблоне мультиплатформенной библиотеки — простой библиотеке с функцией для генерации последовательности Фибоначчи.
Настройка среды
Установите все необходимые инструменты и обновите их до последних версий.
Создание проекта
В IntelliJ IDEA выберите Файл | Создать | Проект из системы контроля версий.
-
Введите URL-адрес проекта-шаблона мультиплатформенной библиотеки:
https://github.com/Kotlin/multiplatform-library-template
Нажмите Клонировать.
Изучение структуры проекта
Проект-шаблон библиотеки Kotlin Multiplatform предоставляет базовую структуру для разработки мультиплатформенных библиотек Kotlin. Этот шаблон помогает создавать библиотеки, работающие на различных платформах.
В проекте-шаблоне library служит основным модулем и содержит основной исходный код и ресурсы сборки мультиплатформенной библиотеки.
Модуль library организован так, чтобы содержать как общий код, так и реализации для отдельных платформ. Вот обзор его исходного кода:
commonMain: содержит код Kotlin, общий для всех целевых платформ. Здесь размещается код, который не зависит от API конкретных платформ.androidMain,iosMain,jvmMainиlinuxX64Main: содержат код для платформ Android, iOS, JVM и Linux соответственно. Здесь реализуются функции, специфичные для этих платформ.commonTest,androidUnitTest,iosTest,jvmTestиlinuxX64Test: содержат тесты общего кодаcommonMainи тесты для платформ Android, iOS, JVM и Linux соответственно.
Рассмотрим код library, общий для всех платформ. В каталоге src/commonMain/kotlin находится файл CustomFibi.kt с кодом Kotlin Multiplatform, в котором определена функция-генератор последовательности Фибоначчи:
package io.github.kotlin.fibonacci
// Defines the function to generate the Fibonacci sequence
fun generateFibi() = sequence {
var a = firstElement
yield(a)
var b = secondElement
yield(b)
while (true) {
val c = a + b
yield(c)
a = b
b = c
}
}
// Declares the expected values for `firstElement` and `secondElement`
expect val firstElement: Int
expect val secondElement: Int
Свойства firstElement и secondElement — это заглушки, которые может реализовать код для отдельных платформ. Каждая целевая платформа должна задать фактические значения с помощью ключевого слова actual в соответствующем наборе исходного кода.
Объявления expect сопоставляются с реализациями actual. Этот механизм полезен при написании кроссплатформенного кода, требующего поведения, зависящего от платформы.
В этом случае шаблон мультиплатформенной библиотеки включает реализации свойств firstElement и secondElement для отдельных платформ. Каталоги androidMain, iosMain, jvmMain и linuxX64Main содержат объявления actual, задающие значения этих свойств.
Например, вот реализация для Android из androidMain/kotlin/fibiprops.android.kt:
package io.github.kotlin.fibonacci actual val firstElement: Int = 1 actual val secondElement: Int = 2
В остальных платформах используется тот же подход, но значения свойств firstElement и secondElement отличаются.
Добавление новой платформы
Теперь, когда вы знакомы с принципами работы общего и платформенного кода в шаблоне, расширим проект и добавим поддержку ещё одной платформы.
Настройте поддержку платформы Kotlin/Wasm с помощью механизма expect / actual, а затем реализуйте платформенную функциональность для свойств firstElement и secondElement.
Добавление целевой платформы Kotlin/Wasm в проект
-
Добавьте целевую платформу Kotlin/Wasm (
wasmJs) и наборы исходного кода в файлlibrary/build.gradle.kts:kotlin { // ... @OptIn(org.jetbrains.kotlin.gradle.ExperimentalWasmDsl::class) wasmJs { browser() binaries.executable() } // ... sourceSets { //... wasmJsMain.dependencies { // Wasm-specific dependencies } } } Синхронизируйте файлы Gradle, нажав значок Синхронизировать изменения Gradle (
), который появится в файле сборки. Также можно нажать кнопку обновления в окне инструмента Gradle.
Создание платформенного кода для Wasm
После добавления целевой платформы Wasm понадобится каталог Wasm для платформенной реализации firstElement и secondElement:
Щёлкните правой кнопкой мыши каталог
library/srcи выберите Создать | Каталог.-
Выберите wasmJsMain/kotlin в списках Наборы исходного кода Gradle.
Щёлкните правой кнопкой мыши созданный каталог
wasmJsMain/kotlinи выберите Создать | Класс/файл Kotlin.Введите fibiprops.wasm в качестве имени файла и выберите Файл.
-
Добавьте следующий код в файл
fibiprops.wasm.kt:package io.github.kotlin.fibonacci actual val firstElement: Int = 3 actual val secondElement: Int = 5
Этот код задаёт реализацию для Wasm, определяя значения
actualдляfirstElementкак3, а дляsecondElement— как5.
Сборка проекта
Убедитесь, что проект успешно компилируется с новой платформой:
Откройте окно инструмента Gradle, выбрав Вид | Окна инструментов | Gradle.
-
В разделе multiplatform-library-template | library | Задачи | build запустите задачу build.

Также можно выполнить в терминале следующую команду из корневого каталога
multiplatform-library-template:./gradlew build
Успешный результат можно увидеть в окне инструмента Сборка.
Публикация библиотеки в локальном репозитории Maven
Мультиплатформенная библиотека готова к локальной публикации, чтобы её можно было использовать в других проектах на том же компьютере.
Для публикации библиотеки используйте плагин Gradle maven-publish следующим образом:
-
Найдите блок
plugins { }в файлеlibrary/build.gradle.ktsи примените плагинmaven-publish:plugins { // ... // Add the following line: id("maven-publish") } -
Найдите блок
mavenPublishing {}и закомментируйте вызовsignAllPublications(), чтобы указать, что публикация предназначена только для локального использования:mavenPublishing { // ... // Comment out the following call: // signAllPublications() } Синхронизируйте файлы Gradle, нажав значок Синхронизировать изменения Gradle (
), который появится в файле сборки. Также можно нажать кнопку обновления в окне инструмента Gradle.
-
В окне инструмента Gradle перейдите в раздел multiplatform-library-template | Задачи | publishing и запустите задачу Gradle publishToMavenLocal.
Также можно выполнить в терминале следующую команду из корневого каталога
multiplatform-library-template:./gradlew publishToMavenLocal
Библиотека опубликована в локальном репозитории Maven.
Чтобы найти опубликованные артефакты, откройте в файловом менеджере или терминале каталог ~\.m2\repository\io\github\kotlin\library\1.0.0\.
Добавление библиотеки в качестве зависимости в другой проект
После публикации мультиплатформенной библиотеки в локальном репозитории Maven её можно использовать в других проектах Kotlin на том же компьютере.
Добавьте в файл settings.gradle.kts проекта-потребителя параметр для поиска пакетов в локальном репозитории:
dependencyResolutionManagement {
repositories {
// ...
mavenLocal()
}
}
Добавьте зависимость от опубликованной библиотеки в файл build.gradle.kts модуля. Если вы добавляете её в другой мультиплатформенный проект, её можно добавить в общие или платформенные наборы исходного кода:
kotlin {
//...
sourceSets {
// For all platforms
commonMain.dependencies {
implementation("io.github.kotlin:library:1.0.0")
}
// Or for a specific platforms
wasmJsMain.dependencies {
implementation("io.github.kotlin:library:1.0.0")
}
}
}
Вызов implementation() принимает группу, имя и версию библиотеки, указанные в её файле build.gradle.kts.
Синхронизируйте проект-потребитель и начните использовать библиотеку, например:
import io.github.kotlin.fibonacci.generateFibi val seq = generateFibi() println(seq.elementAt(3))
Что дальше
Рекомендуем продолжить изучение мультиплатформенной разработки:
Присоединяйтесь к сообществу:
GitHub Compose Multiplatform: поставьте звезду репозиторию и внесите свой вклад
Kotlin Slack: получите приглашение и присоединитесь к каналу #multiplatform
Stack Overflow: подпишитесь на тег «kotlin-multiplatform»
YouTube-канал Kotlin: подпишитесь и смотрите видео о Kotlin Multiplatform
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/multiplatform/create-kotlin-multiplatform-library.html