Open1

Composite Build に関するメモ

hiraokhiraok

com.android.build.gradleとcom.android.build.gradle.api.dslの違い

CustomPluginなどを作成しているとこの辺の参照が間違えている時があるのでメモ

com.android.build.gradlecom.android.build.gradle.api.dsl は、Android Gradle Plugin で使用される二つの異なるパッケージを表しています。

  1. com.android.build.gradle

    • このパッケージには、Android Gradle Plugin の公開APIが含まれています。
    • Gradle スクリプトから直接アクセスできる API を提供します。
    • 主に設定ブロック内で使用されます (例: android { ... })。
  2. com.android.build.gradle.api.dsl

    • このパッケージには、Android Gradle Plugin の DSL (Domain Specific Language) API が含まれています。
    • DSL は、Android Gradle Plugin の構成要素を宣言的に定義するための API です。
    • Gradle プロジェクトの設定ファイル (build.gradle) 内で使用されます。

つまり、com.android.build.gradle は Gradle スクリプトから呼び出される公開 API を提供し、com.android.build.gradle.api.dsl は Gradle プロジェクトの設定ファイルで使用される DSL API を提供します。

具体的な使用例を示すと、以下のようになります。

build.gradle ファイル内の DSL API の使用例:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 30 // com.android.build.gradle.api.dsl パッケージから
    ...
}

Gradle スクリプト内の公開 API の使用例:

import com.android.build.gradle.AppExtension // com.android.build.gradle パッケージから

android.applicationVariants.all { variant ->
    // 公開 API を使用した処理
}

要約すると、com.android.build.gradle は Gradle スクリプトから直接呼び出される API で、com.android.build.gradle.api.dsl は設定ファイルで使用される DSL API です。両者はAndroid Gradle Pluginの機能を提供するために相互に関連しています。