Android Gradle プラグインの DSL / API の移行スケジュール

Android Gradle プラグイン(AGP)は、Android アプリでサポートされているビルドシステムであり、さまざまなタイプのソースをコンパイルして、実際の Android デバイスまたはエミュレータ上で実行可能なアプリにまとめてリンクできます。

以下のセクションでは、AGP の DSL と API の予定されている進化について説明します。安定版リリースで新しい API が導入されると、古い API は非推奨としてマークされます。非推奨の API は、次の安定版リリースでは利用できなくなります。AGP の各メジャー リリースで予定されている変更点に関する情報は、以下のとおりです。

AGP 7.0(2021 年前半)

新しい Variant API が安定版となり、古い API は非推奨となります

  • 4.1 と 4.2 では準備中であった Variant API が安定します。
  • これらのインターフェースはすべて gradle-api アーティファクトにあります。
  • 古い Variant API で使用されていた以前のインターフェースとクラスは、非推奨になります。

AGP 7.1(2021 年後半)

新しい DSL インターフェースが安定版となり、古い DSL インターフェースは非推奨となります

  • 4.1、4.2、7.0 では準備中であった DSL インターフェースが安定します。
  • これらのインターフェースはすべて gradle-api アーティファクトにあります。
  • DSL で使用していた以前のインターフェースとクラスは、非推奨になります。

プラグインを作成する際、新しいインターフェースとクラスのみを使用するため、gradle-api アーティファクトのみに依存することをおすすめします。ただし、8.0 で gradle-api に移動するプラグイン クラスは例外です。

非公開の内部 AGP クラスには引き続きアクセス可能

他のアーティファクトにある AGP の非公開の内部クラスには、ビルドファイルのコンパイル中に引き続きアクセスできますが、常に破壊的に変更される可能性があるため、使用することはおすすめしません

AGP 8.0(2022 年前半)

古い API が削除されます

  • DSL と古い Variant API で使用されていた以前のインターフェースとクラスはすべて削除されます。
  • gradle-api アーティファクトは、DSL と Variant API のインターフェースとクラスにアクセスするために必要な唯一のアーティファクトであり、プラグインの開発時に使用する必要があります。
  • Gradle メタデータを使用すると、コンパイルとランタイムに異なる依存関係グラフが提供されるため、ビルドファイルのコンパイル中に使用できるアーティファクトは gradle-api のみになります。

非公開の内部 AGP クラスには引き続きアクセス可能

コンパイル クラスパスで AGP の非公開の内部クラスを使用するアーティファクトには引き続き手動で依存できますが(プラグインとビルドファイルの両方)、9.0 でアクセス権が削除されるため、おすすめしません。

AGP 9.0(2023 年前半)

非公開の内部 AGP クラスへのアクセス権が削除されます

gradle アーティファクトへの依存関係によって、すべての内部クラスが非表示になり、gradle-api アーティファクトで使用できるインターフェースとクラスにのみコンパイル アクセス権が付与されます。これは、プラグインとビルドファイルのコンパイルの両方に影響を与えます。

内部クラスにアクセスするために、手動で依存関係を追加することはできません。