Добавление зависимостей в многоплатформенные библиотеки
Каждая программа требует набора библиотек для успешной работы. Проект Kotlin Multiplatform может зависеть от многоплатформенных библиотек, работающих на всех целевых платформах, платформах-специфичных библиотек и других многоплатформенных проектах.
Для добавления зависимости от библиотеки обновите ваш build.gradle(.kts) файл в директории shared вашего проекта. Установите зависимость требуемого типа (например, implementation) в блоке dependencies:
kotlin {
sourceSets {
val commonMain by getting {
dependencies {
implementation("com.example:my-library:1.0")
}
}
}
}
kotlin {
sourceSets {
commonMain {
dependencies {
implementation 'com.example:my-library:1.0'
}
}
}
}
В качестве альтернативы можно установить зависимости на верхнем уровне.
Зависимость от библиотеки Kotlin
Стандартная библиотека
Зависимость от стандартной библиотеки (stdlib) в каждом наборе исходного кода добавляется автоматически. Версия стандартной библиотеки совпадает с версией плагина kotlin-multiplatform.
Для наборов исходного кода, специфичных для платформы, используется соответствующий вариант библиотеки, специфичный для платформы, в то время как общая стандартная библиотека добавляется ко всем остальным. Плагин Kotlin Gradle выберет соответствующую JVM-стандартную библиотеку в зависимости от kotlinOptions.jvmTarget варианта компилятора вашего скрипта Gradle.
Узнайте, как изменить поведение по умолчанию.
Библиотеки тестов
Для многоплатформенных тестов доступен kotlin.test API. При создании многоплатформенного проекта Мастер проекта автоматически добавляет зависимости для тестов в общие и платформенно-специфичные наборы исходного кода.
Если вы не использовали Мастер проекта для создания проекта, вы можете добавить зависимости вручную.
Библиотеки kotlinx
Если вы используете многоплатформенную библиотеку и вам нужно зависеть от общего кода, установите зависимость только один раз в общем наборе исходного кода. Используйте имя артефакта библиотеки, такое как kotlinx-coroutines-core.
kotlin {
sourceSets {
val commonMain by getting {
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0")
}
}
}
}
kotlin {
sourceSets {
commonMain {
dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0'
}
}
}
}
Если вы используете библиотеку kotlinx и вам нужна платформенно-специфичная зависимость, вы можете использовать платформенно-специфичные варианты библиотек с суффиксами, такими как -jvm или -js, например, kotlinx-coroutines-core-jvm.
kotlin {
sourceSets {
val jvmMain by getting {
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.0")
}
}
}
}
kotlin {
sourceSets {
jvmMain {
dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.0'
}
}
}
}
Зависимость от многоплатформенных библиотек Kotlin
Вы можете добавить зависимости от библиотек, которые используют технологию Kotlin Multiplatform, например, SQLDelight. Авторы этих библиотек обычно предоставляют руководства по добавлению своих зависимостей в ваш проект.
Посмотрите этот поддерживаемый сообществом список библиотек Kotlin Multiplatform.
Библиотека, общая для всех наборов исходного кода
Если вы хотите использовать библиотеку из всех наборов исходного кода, вы можете добавить её только в общий набор. Плагин Kotlin Multiplatform Mobile автоматически добавит соответствующие части ко всем другим наборам.
kotlin {
sourceSets["commonMain"].dependencies {
implementation("io.ktor:ktor-client-core:2.0.0-beta-1")
}
sourceSets["androidMain"].dependencies {
//dependency to platform part of kotlinx.coroutines will be added automatically
}
}
kotlin {
sourceSets {
commonMain {
dependencies {
implementation 'io.ktor:ktor-client-core:2.0.0-beta-1'
}
}
androidMain {
dependencies {
//dependency to platform part of kotlinx.coroutines will be added automatically
}
}
}
}
Библиотека, используемая в определённых наборах исходного кода
Если вы хотите использовать многоплатформенную библиотеку только для определённых наборов исходного кода, вы можете добавить её исключительно в них. Тогда указанные объявления библиотек будут доступны только в этих наборах.
kotlin {
sourceSets["commonMain"].dependencies {
//kotlinx.coroutines will be available in all source sets
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0")
}
sourceSets["androidMain"].dependencies {
}
sourceSets["iosX64Main"].dependencies {
//SQLDelight will be available only in the iOS source set, but not in Android or common
implementation("com.squareup.sqldelight:native-driver:1.4.1")
}
}
kotlin {
sourceSets {
commonMain {
dependencies {
// kotlinx.coroutines will be available in all source sets
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0'
}
}
androidMain {
dependencies {}
}
iosMain {
dependencies {
// SQLDelight will be available only in the iOS source set, but not in Android or common
implementation 'com.squareup.sqldelight:native-driver:1.4.1'
}
}
}
}
Зависимость от другого многоплатформенного проекта
Вы можете подключить один многоплатформенный проект к другому в качестве зависимости. Для этого просто добавьте зависимость проекта в набор исходного кода, которому она нужна. Если вы хотите использовать зависимость во всех наборах исходного кода, добавьте её в общий набор. В этом случае другие наборы получат их версии автоматически.
kotlin {
sourceSets["commonMain"].dependencies {
implementation(project(":some-other-multiplatform-module"))
}
sourceSets["androidMain"].dependencies {
//platform part of :some-other-multiplatform-module will be added automatically
}
}
kotlin {
sourceSets {
commonMain {
dependencies {
implementation project(':some-other-multiplatform-module')
}
}
androidMain {
dependencies {
//platform part of :some-other-multiplatform-module will be added automatically
}
}
}
}
Что дальше?
Посмотрите другие ресурсы по добавлению зависимостей в многоплатформенных проектах и узнайте больше о:
© 2010–2022 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/multiplatform-add-dependencies.html