水曜日, 6月 11, 2025
- Advertisment -
ホームニューステックニュースdependenciesの定義場所で変わるビルドの世界(AGP vs KMP) #Android - Qiita

dependenciesの定義場所で変わるビルドの世界(AGP vs KMP) #Android – Qiita



dependenciesの定義場所で変わるビルドの世界(AGP vs KMP) #Android - Qiita

Kotlin Multiplatform(KMP)プロジェクトにおいて、Gradleのdependencies定義に混乱したことはありませんか?

特に、「トップレベルのdependenciessourceSets内のdependenciesって何が違うの?」「依存関係どっちのdependenciesに追加したらいいの?」と感じた方も多いはずです。

本記事では、Android Gradle Plugin(AGP)とKMPプラグインがそれぞれ管理するdependenciesの違いをわかりやすく整理します。

Gradleプラグインの役割整理

🔧 Android Gradle Plugin(AGP)

公式ドキュメント によれば、AGPは Android特有のビルド処理 を行うGradle拡張プラグインです。

plugins {
    alias(libs.plugins.androidApplication)
    // → "com.android.application"
}

これにより、Androidアプリ向けのビルド設定が自動化されます。

🌐 Kotlin Multiplatform Plugin(KMP)

KMP公式ガイド によれば、KMPプラグインは 共通のKotlinコードを複数プラットフォームにコンパイル する仕組みを提供します。

plugins {
    alias(libs.plugins.kotlinMultiplatform)
    // → "org.jetbrains.kotlin.multiplatform"
}

Q. AGPとKMP、どちらかだけでOK?

A. NO!

KMPプロジェクトにおいても、AndroidビルドにはAGPが必須です。

AGPとKMPは以下のような住み分けで動作します:

プラグイン 主な責任
AGP Android向けビルドタスクの処理
KMP 共通コード・マルチプラットフォーム出力の管理

dependencies の違い:定義場所で作用範囲が異なる!

1. トップレベルの dependencies

dependencies {
    implementation("androidx.core:core-ktx:1.10.1")
}
  • 管理者:AGP
  • 対象範囲:Androidモジュール全体
  • Androidアプリ単体でビルドしているときと同様の扱い

2. sourceSets 内の dependencies

kotlin {
    sourceSets {
        val commonMain by getting {
            dependencies {
                implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
            }
        }
    }
}

Q. なぜ commonMain の依存関係が androidMainiosMain からも参照できるの?

A. commonMain は各プラットフォームのベースになるからです。

KMPでは、commonMainが基底ソースセットとして機能し、各プラットフォームのソースセット(androidMainiosMainなど)がこれを「継承」する構造になっています。

これはGradleのマルチプラットフォームプラグインが持つ 暗黙的な継承機構 に基づいています。

参考:The basics of Kotlin Multiplatform project structure – SourceSets

まとめ

  • AGPとKMPは別々の目的で動作している
  • dependenciesの定義場所で作用範囲が変わる
  • commonMainの依存関係は、プラットフォーム側でも使えるように設計されている

おわりに

KMP導入初期にぶつかりがちなこの依存関係の違い、理解が進めば柔軟なアーキテクチャ設計が可能になります。

似たような悩みを持っている方は多いと思うので、本記事がその一助となれば幸いです 🙌





Source link

Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -