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技術を採用しているライブラリへの依存関係を追加できます。これらのライブラリの作者は通常、プロジェクトに依存関係を追加するためのガイドを提供しています。

Kotlin Multiplatformライブラリについては、JetBrainsの検索プラットフォームで探してみてください。

すべてのソースセットで共有されるライブラリ

すべてのソースセットからライブラリを使用したい場合は、共通(common)ソースセットにのみ追加できます。Kotlin Multiplatform Gradleプラグインは、他のソースセットに対応するパーツを自動的に追加します。

共通ソースセットにプラットフォーム固有のライブラリの依存関係を設定することはできません。

kotlin
kotlin {
    //...
    sourceSets {
        commonMain.dependencies {
            implementation("io.ktor:ktor-client-core:3.3.3")
        }
        androidMain.dependencies {
            // ktor-clientのプラットフォーム用パーツへの依存関係が自動的に追加されます
        }
    }
}
groovy
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
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 {
            
        }
    }
}
groovy
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
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 のプラットフォーム用パーツが自動的に追加されます
            }
        }
    }
}

次のステップ

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