Skip to content

マルチプラットフォームライブラリへの依存関係の追加

すべてのプログラムは、正常に動作するために一連のライブラリを必要とします。Kotlin Multiplatformプロジェクトは、すべてのターゲットプラットフォームで動作するマルチプラットフォームライブラリ、プラットフォーム固有のライブラリ、および他のマルチプラットフォームプロジェクトに依存できます。

ライブラリへの依存関係を追加するには、共有コードを含むプロジェクトのディレクトリにあるbuild.gradle(.kts)ファイルを更新します。dependencies {}ブロック内で、必要な(例: implementation)の依存関係を設定します。

kotlin
kotlin {
    //...
    sourceSets {
        commonMain.dependencies {
            implementation("com.example:my-library:1.0") // すべてのソースセットで共有されるライブラリ
        }
    }
}
groovy
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
kotlin {
    //...
    sourceSets {
        commonTest.dependencies {
            implementation(kotlin("test")) // すべてのプラットフォーム依存関係を自動的に提供します
        }
    }
}
groovy
kotlin {
    //...
    sourceSets {
        commonTest {
            dependencies {
                implementation kotlin("test") // すべてのプラットフォーム依存関係を自動的に提供します
            }
        }
    }
}

kotlinxライブラリ

マルチプラットフォームライブラリを使用し、共有コードに依存する必要がある場合、依存関係は共有ソースセットに一度だけ設定します。kotlinx-coroutines-coreなどのライブラリベースのアーティファクト名を使用します。

kotlin
kotlin {
    //...
    sourceSets {
        commonMain.dependencies {
            implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2")
        }
    }
}
groovy
kotlin {
    //...
    sourceSets {
        commonMain {
            dependencies {
                implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2'
            }
        }
    }
}

プラットフォーム固有の依存関係としてkotlinxライブラリが必要な場合でも、対応するプラットフォームソースセットでライブラリのベースアーティファクト名を使用できます。

kotlin
kotlin {
    //...
    sourceSets {
        jvmMain.dependencies {
            implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2")
        }
    }
}
groovy
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
kotlin {
    //...
    sourceSets {
        commonMain.dependencies {
            implementation("io.ktor:ktor-client-core:3.2.3")
        }
        androidMain.dependencies {
            // ktor-client のプラットフォーム部分への依存関係が自動的に追加されます
        }
    }
}
groovy
kotlin {
    //...
    sourceSets {
        commonMain {
            dependencies {
                implementation 'io.ktor:ktor-client-core:3.2.3'
            }
        }
        androidMain {
            dependencies {
                // ktor-client のプラットフォーム部分への依存関係が自動的に追加されます
            }
        }
    }
}

特定のソースセットで使用されるライブラリ

マルチプラットフォームライブラリを特定のソースセットでのみ使用したい場合は、それらにのみ追加できます。その場合、指定されたライブラリの宣言は、それらのソースセットでのみ利用可能になります。

このような場合、共通のライブラリ名を使用し、プラットフォーム固有のものではないものを使用してください。以下の例のSQLDelightのように、native-driver-iosx64ではなくnative-driverを使用します。正確な名前はライブラリのドキュメントで確認してください。

kotlin
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 {
            
        }
    }
}
groovy
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
kotlin {
    //...
    sourceSets {
        commonMain.dependencies {
            implementation(project(":some-other-multiplatform-module"))
        }
        androidMain.dependencies {
            // :some-other-multiplatform-module のプラットフォーム部分が自動的に追加されます
        }
    }
}
groovy
kotlin {
    //...
    sourceSets {
        commonMain {
            dependencies {
                implementation project(':some-other-multiplatform-module')
            }
        }
        androidMain {
            dependencies {
                // :some-other-multiplatform-module のプラットフォーム部分が自動的に追加されます
            }
        }
    }
}

次のステップ

マルチプラットフォームプロジェクトへの依存関係の追加に関する他のリソースを確認し、以下について詳しく学びましょう。