プロジェクトに依存関係を追加する
このチュートリアルではIntelliJ IDEAを使用していますが、Android Studioでも同様に進めることができます。どちらのIDEもコア機能とKotlin Multiplatformのサポートを共有しています。
これは「共有ロジックとネイティブUIを備えたKotlin Multiplatformアプリを作成する」チュートリアルの第3部です。進む前に、前の手順を完了していることを確認してください。
最初のクロスプラットフォームKotlin Multiplatformプロジェクトはすでに作成しましたね!ここでは、成功するクロスプラットフォームアプリケーションを構築するために不可欠な、サードパーティライブラリへの依存関係の追加方法を学びましょう。
依存関係の種類
Kotlin Multiplatformプロジェクトで利用できる依存関係には、次の2種類があります。
Multiplatform依存関係。これらは、複数のターゲットをサポートし、共通ソースセット
commonMain
で使用できるマルチプラットフォームライブラリです。多くの最新のAndroidライブラリは、すでにKoin、Apollo、Okioのようにマルチプラットフォームをサポートしています。JetBrainsが提供するKotlin Multiplatformライブラリ発見のための実験的な検索サービスであるklibs.ioで、さらに多くのマルチプラットフォームライブラリを見つけることができます。
ネイティブ依存関係。これらは関連するエコシステムの通常のライブラリです。ネイティブプロジェクトでは、AndroidではGradleを、iOSではCocoaPodsまたは別の依存関係マネージャーを使用して作業するのが一般的です。
共有モジュールで作業する場合、通常、セキュリティストレージなどのプラットフォームAPIを使用したい場合は、依然としてネイティブ依存関係が必要です。ネイティブ依存関係は、ネイティブソースセット
androidMain
およびiosMain
に追加できます。
どちらのタイプの依存関係でも、ローカルおよび外部リポジトリを使用できます。
マルチプラットフォーム依存関係を追加する
Androidアプリ開発の経験がある場合、マルチプラットフォーム依存関係の追加は、通常のAndroidプロジェクトでGradle依存関係を追加するのと似ています。唯一の違いは、ソースセットを指定する必要があることです。
アプリに戻って、挨拶を少しお祝いムードにしてみましょう。デバイス情報に加えて、新年までの残り日数を表示する関数を追加します。kotlinx-datetime
ライブラリは、完全にマルチプラットフォームをサポートしており、共有コードで日付を扱う最も便利な方法です。
shared
ディレクトリにあるbuild.gradle.kts
ファイルを開きます。次の依存関係とKotlin time opt-inを
commonMain
ソースセットの依存関係に追加します。kotlinkotlin { //... sourceSets languageSettings.optIn("kotlin.time.ExperimentalTime") commonMain.dependencies { implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.7.1") } } }
Sync Gradle Changesボタンをクリックして、Gradleファイルを同期します。
shared/src/commonMain/kotlin
内で、Greeting.kt
ファイルがあるプロジェクトディレクトリに、新しいファイルNewYear.kt
を作成します。date-time
の日付計算を使用して、今日から新年までの日数を計算する短い関数でファイルを更新します。kotlinimport kotlinx.datetime.* import kotlin.time.Clock fun daysUntilNewYear(): Int { val today = Clock.System.todayIn(TimeZone.currentSystemDefault()) val closestNewYear = LocalDate(today.year + 1, 1, 1) return today.daysUntil(closestNewYear) } fun daysPhrase(): String = "There are only ${daysUntilNewYear()} days left until New Year! 🎆"
Greeting.kt
で、結果を確認するためにGreeting
クラスを更新します。kotlinclass Greeting { private val platform: Platform = getPlatform() fun greet(): List<String> = buildList { add(if (Random.nextBoolean()) "Hi!" else "Hello!") add("Guess what this is! > ${platform.name.reversed()}!") add(daysPhrase()) } }
結果を確認するには、IntelliJ IDEAからcomposeAppとiosAppの構成を再実行します。
次のステップ
チュートリアルの次のパートでは、さらに多くの依存関係とより複雑なロジックをプロジェクトに追加します。
関連項目
- あらゆる種類のマルチプラットフォーム依存関係の操作方法について説明します:Kotlinライブラリ、Kotlin Multiplatformライブラリ、その他のマルチプラットフォームプロジェクト。
- プラットフォーム固有のソースセットで使用するためのAndroid依存関係の追加方法と、CocoaPodsを使用するかどうかにかかわらずiOS依存関係の追加方法を学びます。
- サンプルプロジェクトでAndroidおよびiOSライブラリを使用する方法の例を確認します。
ヘルプ
- Kotlin Slack。招待を受け取り、#multiplatformチャンネルに参加してください。
- Kotlinイシュートラッカー。新しいイシューを報告する。