マルチプラットフォームライブラリへの依存関係の追加
すべてのプログラムが正常に動作するには、一連のライブラリが必要です。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技術を採用しているライブラリへの依存関係を追加できます。これらのライブラリの作者は通常、プロジェクトに依存関係を追加するためのガイドを提供しています。
Kotlin Multiplatformライブラリについては、JetBrainsの検索プラットフォームで探してみてください。
すべてのソースセットで共有されるライブラリ
すべてのソースセットからライブラリを使用したい場合は、共通(common)ソースセットにのみ追加できます。Kotlin Multiplatform Gradleプラグインは、他のソースセットに対応するパーツを自動的に追加します。
共通ソースセットにプラットフォーム固有のライブラリの依存関係を設定することはできません。
kotlin {
//...
sourceSets {
commonMain.dependencies {
implementation("io.ktor:ktor-client-core:3.3.3")
}
androidMain.dependencies {
// ktor-clientのプラットフォーム用パーツへの依存関係が自動的に追加されます
}
}
}kotlin {
//...
sourceSets {
commonMain {
dependencies {
implementation 'io.ktor:ktor-client-core:3.3.3'
}
}
androidMain {
dependencies {
// ktor-clientのプラットフォーム用パーツへの依存関係が自動的に追加されます
}
}
}
}共通ライブラリをトップレベルの
dependencies {}ブロックで構成することもできます。トップレベルでの依存関係の構成を参照してください。
特定のソースセットで使用されるライブラリ
特定のソースセットでのみマルチプラットフォームライブラリを使用したい場合は、それらのソースセットにのみライブラリを追加できます。指定されたライブラリの宣言は、それらのソースセットでのみ利用可能になります。
このような場合は、プラットフォーム固有の名前ではなく、共通のライブラリ名を使用してください。以下の例の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やcommonでは利用できません
implementation("com.squareup.sqldelight:native-driver:2.2.1")
}
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やcommonでは利用できません
implementation 'com.squareup.sqldelight:native-driver:2.2.1'
}
}
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 のプラットフォーム用パーツが自動的に追加されます
}
}
}
}次のステップ
マルチプラットフォームプロジェクトでの依存関係の追加に関する他のリソースを確認し、以下についてさらに詳しく学びましょう:
