Spec-Zone.ru › Kotlin 1.9

Добавление зависимостей в многоплатформенные библиотеки

Каждая программа требует набора библиотек для успешной работы. Проект Kotlin Multiplatform может зависеть от многоплатформенных библиотек, работающих на всех целевых платформах, платформенно-специфических библиотек и других многоплатформенных проектах.

Для добавления зависимости от библиотеки обновите файл build.gradle(.kts) в каталоге shared вашего проекта. Установите зависимость требуемого типа (например, implementation) в блоке dependencies:

kotlin {
    sourceSets {
        val commonMain by getting {
            dependencies {
                implementation("com.example:my-library:1.0") // library shared for all source sets
            }
        }
    }
}
kotlin {
    sourceSets {
        commonMain {
            dependencies {
                implementation 'com.example:my-library:1.0'
            }
        }
    }
}

В качестве альтернативы, вы можете установить зависимости на верхнем уровне.

Зависимость от библиотеки Kotlin

Стандартная библиотека

Зависимость от стандартной библиотеки (stdlib) в каждом наборе исходных файлов добавляется автоматически. Версия стандартной библиотеки совпадает с версией плагина kotlin-multiplatform.

Для платформенно-специфических наборов исходных файлов используется соответствующая платформенно-специфическая версия библиотеки, а общая стандартная библиотека добавляется в остальные. Плагин Kotlin Gradle выберет соответствующую JVM стандартную библиотеку в зависимости от compilerOptions.jvmTarget опции компилятора вашего скрипта Gradle.

Узнайте, как изменить стандартное поведение.

Библиотеки для тестирования

kotlin.test API доступна для многоплатформенных тестов. При создании многоплатформенного проекта мастер проекта автоматически добавляет зависимости для тестирования в общие и платформенно-специфические наборы исходных файлов.

Если вы не использовали мастер проекта для создания проекта, вы можете добавить зависимости вручную.

Библиотеки kotlinx

Если вы используете многоплатформенную библиотеку и вам нужно зависеть от общего кода, установите зависимость только один раз в общем наборе исходных файлов. Используйте имя базового артефакта библиотеки, например kotlinx-coroutines-core.

kotlin {
    sourceSets {
        val commonMain by getting {
            dependencies {
                implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1")
            }
        }
    }
}
kotlin {
    sourceSets {
        commonMain {
            dependencies {
                implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1'
            }
        }
    }
}

Если вы используете библиотеку kotlinx и вам нужна платформенно-специфичная зависимость, вы можете использовать платформенно-специфические варианты библиотек с суффиксами, например -jvm или -js, например, kotlinx-coroutines-core-jvm.

kotlin {
    sourceSets {
        val jvmMain by getting {
            dependencies {
                implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.7.1")
            }
        }
    }
}

kotlin {
    sourceSets {
        jvmMain {
            dependencies {
                implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.7.1'
            }
        }
    }
}

Зависимость от многоплатформенных библиотек Kotlin

Вы можете добавить зависимости от библиотек, которые используют технологию Kotlin Multiplatform, например, SQLDelight. Авторы этих библиотек обычно предоставляют руководства по добавлению своих зависимостей в ваш проект.

Ознакомьтесь с этим сообществом поддерживаемый список многоплатформенных библиотек Kotlin.

Библиотека, общая для всех наборов исходных файлов

Если вы хотите использовать библиотеку из всех наборов исходных файлов, вы можете добавить её только в общий набор исходных файлов. Плагин Kotlin Multiplatform Mobile автоматически добавит соответствующие части в другие наборы исходных файлов.

Вы не можете устанавливать зависимости от платформенно-специфических библиотек в общем наборе исходных файлов.

kotlin {
    sourceSets {
        val commonMain by getting {
            dependencies {
                implementation("io.ktor:ktor-client-core:2.3.2")
            }
        }
        val androidMain by getting {
            dependencies {
                // dependency to a platform part of ktor-client will be added automatically
            }
        }
    }
}
kotlin {
    sourceSets {
        commonMain {
            dependencies {
                implementation 'io.ktor:ktor-client-core:2.3.2'
            }
        }
        androidMain {
            dependencies {
                // dependency to platform part of ktor-client will be added automatically
            }
        }
    }
}

Библиотека, используемая в конкретных наборах исходных файлов

Если вы хотите использовать многоплатформенную библиотеку только для конкретных наборов исходных файлов, вы можете добавить её исключительно в них. Тогда объявленные библиотеки будут доступны только в этих наборах.

В таких случаях не используйте платформенно-специфическое имя, например SQLDelight native-driver в примере ниже. Найдите точное имя в документации библиотеки.

kotlin {
    sourceSets {
        val commonMain by getting {
            dependencies {
                // kotlinx.coroutines will be available in all source sets
                implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1")
            }
        }
        val androidMain by getting {
            dependencies {}
        }
        val iosMain by getting {
            dependencies {
                // SQLDelight will be available only in the iOS source set, but not in Android or common
                implementation("com.squareup.sqldelight:native-driver:1.5.5")
            }
        }
    }
}
kotlin {
    sourceSets {
        commonMain {
            dependencies {
                // kotlinx.coroutines will be available in all source sets
                implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1'
            }
        }
        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.5.5'
            }
        }
    }
}

Зависимость от другого многоплатформенного проекта

Вы можете подключить один многоплатформенный проект к другому как зависимость. Для этого просто добавьте зависимость проекта в набор исходных файлов, которому она нужна. Если вы хотите использовать зависимость во всех наборах исходных файлов, добавьте её в общий набор. В этом случае другие наборы исходных файлов получат их версии автоматически.

kotlin {
    sourceSets {
        val commonMain by getting {
            dependencies {
                implementation(project(":some-other-multiplatform-module"))
            }
        }
        val androidMain by getting {
            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
            }
        }
    }
}

Что дальше?

Ознакомьтесь с другими ресурсами по добавлению зависимостей в многоплатформенные проекты и узнайте больше о:

  • Добавление зависимостей Android

  • Добавление зависимостей iOS

Последнее изменение: 30 марта 2023
Макет набора исходных файлов Android Добавление зависимостей Android

© 2010–2023 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API