マルチプラットフォームライブラリへの依存関係の追加
すべてのプログラムは、正常に動作するために一連のライブラリを必要とします。Kotlin Multiplatformプロジェクトは、すべてのターゲットプラットフォームで動作するマルチプラットフォームライブラリ、プラットフォーム固有のライブラリ、および他のマルチプラットフォームプロジェクトに依存できます。
ライブラリへの依存関係を追加するには、共有コードを含むプロジェクトのディレクトリにあるbuild.gradle(.kts)
ファイルを更新します。dependencies {}
ブロック内で、必要な型(例: implementation
)の依存関係を設定します。
kotlin {
//...
sourceSets {
commonMain.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プラグインは、GradleビルドスクリプトのcompilerOptions.jvmTarget
コンパイラオプションに応じて、適切なJVM標準ライブラリを選択します。
デフォルトの動作を変更する方法について学習してください。
テストライブラリ
マルチプラットフォームテストには、kotlin.test
APIが利用可能です。マルチプラットフォームプロジェクトを作成する際、commonTest
に単一の依存関係を追加することで、すべてのソースセットにテスト依存関係を追加できます。
kotlin {
//...
sourceSets {
commonTest.dependencies {
implementation(kotlin("test")) // すべてのプラットフォーム依存関係を自動的に提供します
}
}
}
kotlin {
//...
sourceSets {
commonTest {
dependencies {
implementation kotlin("test") // すべてのプラットフォーム依存関係を自動的に提供します
}
}
}
}
kotlinxライブラリ
マルチプラットフォームライブラリを使用し、共有コードに依存する必要がある場合、依存関係は共有ソースセットに一度だけ設定します。kotlinx-coroutines-core
などのライブラリベースのアーティファクト名を使用します。
kotlin {
//...
sourceSets {
commonMain.dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2")
}
}
}
kotlin {
//...
sourceSets {
commonMain {
dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2'
}
}
}
}
プラットフォーム固有の依存関係としてkotlinxライブラリが必要な場合でも、対応するプラットフォームソースセットでライブラリのベースアーティファクト名を使用できます。
kotlin {
//...
sourceSets {
jvmMain.dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2")
}
}
}
kotlin {
//...
sourceSets {
jvmMain {
dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2'
}
}
}
}
Kotlin Multiplatformライブラリへの依存関係
SQLDelightなど、Kotlin Multiplatformテクノロジーを採用しているライブラリへの依存関係を追加できます。これらのライブラリの作者は通常、プロジェクトに依存関係を追加するためのガイドを提供しています。
JetBrainsの検索プラットフォームでKotlin Multiplatformライブラリを探してください。
すべてのソースセットで共有されるライブラリ
すべてのソースセットからライブラリを使用したい場合、共通ソースセットにのみ追加できます。Kotlin Multiplatform Mobileプラグインは、対応する部分を他のソースセットに自動的に追加します。
共通ソースセットでプラットフォーム固有のライブラリに依存関係を設定することはできません。
kotlin {
//...
sourceSets {
commonMain.dependencies {
implementation("io.ktor:ktor-client-core:3.2.3")
}
androidMain.dependencies {
// ktor-client のプラットフォーム部分への依存関係が自動的に追加されます
}
}
}
kotlin {
//...
sourceSets {
commonMain {
dependencies {
implementation 'io.ktor:ktor-client-core:3.2.3'
}
}
androidMain {
dependencies {
// ktor-client のプラットフォーム部分への依存関係が自動的に追加されます
}
}
}
}
特定のソースセットで使用されるライブラリ
マルチプラットフォームライブラリを特定のソースセットでのみ使用したい場合は、それらにのみ追加できます。その場合、指定されたライブラリの宣言は、それらのソースセットでのみ利用可能になります。
このような場合、共通のライブラリ名を使用し、プラットフォーム固有のものではないものを使用してください。以下の例のSQLDelightのように、
native-driver-iosx64
ではなくnative-driver
を使用します。正確な名前はライブラリのドキュメントで確認してください。
kotlin {
//...
sourceSets {
commonMain.dependencies {
// kotlinx.coroutines はすべてのソースセットで利用可能になります
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2")
}
androidMain.dependencies {
}
iosMain.dependencies {
// SQLDelight は iOS ソースセットでのみ利用可能になり、Android や共通ソースセットでは利用できません
implementation("com.squareup.sqldelight:native-driver:2.1.0")
}
wasmJsMain.dependencies {
}
}
}
kotlin {
//...
sourceSets {
commonMain {
dependencies {
// kotlinx.coroutines はすべてのソースセットで利用可能になります
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2'
}
}
androidMain {
dependencies {}
}
iosMain {
dependencies {
// SQLDelight は iOS ソースセットでのみ利用可能になり、Android や共通ソースセットでは利用できません
implementation 'com.squareup.sqldelight:native-driver:2.1.0'
}
}
wasmJsMain {
dependencies {}
}
}
}
他のマルチプラットフォームプロジェクトへの依存関係
あるマルチプラットフォームプロジェクトを別のプロジェクトに依存関係として接続できます。これを行うには、必要なソースセットにプロジェクトの依存関係を追加するだけです。すべてのソースセットで依存関係を使用したい場合は、共通ソースセットに追加します。この場合、他のソースセットは自動的にそのバージョンを取得します。
kotlin {
//...
sourceSets {
commonMain.dependencies {
implementation(project(":some-other-multiplatform-module"))
}
androidMain.dependencies {
// :some-other-multiplatform-module のプラットフォーム部分が自動的に追加されます
}
}
}
kotlin {
//...
sourceSets {
commonMain {
dependencies {
implementation project(':some-other-multiplatform-module')
}
}
androidMain {
dependencies {
// :some-other-multiplatform-module のプラットフォーム部分が自動的に追加されます
}
}
}
}
次のステップ
マルチプラットフォームプロジェクトへの依存関係の追加に関する他のリソースを確認し、以下について詳しく学びましょう。