Android Gradle プラグイン プレビューのリリースノート

このページには、Android Gradle プラグイン(AGP)のプレビュー リリースのリリースノートが記載されています。

Android Gradle プラグイン 9.0

Android Gradle プラグイン 9.0 は AGP の新しいメジャー リリースで、API と動作の変更が導入されています。

Android Gradle プラグイン 9.0.0-alpha04 に更新するには、Android Studio Narwhal 4 Feature Drop | 2025.1.4 の Android Gradle プラグイン Upgrade Assistant を使用します。

AGP Upgrade Assistant は、プロジェクトをアップグレードする際に、必要に応じて既存の動作を維持するのに役立ちます。これにより、AGP 9.0 の新しいデフォルトをすべて採用する準備ができていない場合でも、プロジェクトをアップグレードして AGP 9.0 を使用できます。

互換性

Android Gradle プラグイン 9.0.0-alpha04 がサポートする最大 Android API レベルは API レベル 36 です。

Android Gradle プラグイン 9.0.0-alpha04 には Gradle 9.0.0 が必要です。

最小バージョン デフォルトのバージョン 備考
Gradle 9.0.0 9.0.0 詳細については、Gradle のアップデートをご覧ください。
SDK Build Tools 36.0.0 36.0.0 SDK Build Tools をインストールまたは設定します。
NDK なし 28.2.13676358 別のバージョンの NDK をインストールまたは設定します。
JDK 17 17 詳細については、JDK バージョンの設定をご覧ください。

内部 DSL 実装と非推奨の Variant API で明示的なオプトインが必要に

Android Gradle プラグインに API サーフェスが定義され、サポートされている API が com.android.tools.build:gradle-api Maven アーティファクトで定義されるようになりました。

既存のバイナリ プラグインやビルド スクリプトとの互換性を維持するため、定義された API サーフェスより前の以前の DSL 実装は、AGP 8.13 以前ではデフォルトで公開されていました。これにより、Gradle プラグインとビルドスクリプトのコードは、DSL の内部実装の詳細と、非推奨の android.applicationVariantsandroid.libraryVariantsandroid.testVariantsandroid.unitTestVariants API の両方にアクセスできます。これらの API は、AGP 10 の 2026 年に削除されます。

この移行をより明確にするため、Android Gradle プラグイン 9.0.0-alpha04 では、以前のバリアント API と内部 DSL の両方がデフォルトでアクセスできなくなっています。

gradle.propertiesandroid.newDsl=false を設定すると、非推奨の API を再び使用できます。

9.0 アルファ版の期間中、プラグインの作成者に連絡を取り、新しいモードに完全に対応したプラグインを適応させてリリースできるようサポートします。また、Android Studio の AGP Upgrade Assistant を強化して、移行をガイドします。

Kotlin が組み込まれている

Android Gradle プラグイン 9 には、Kotlin をコンパイルするための組み込みのサポートが含まれており、個別に適用された Kotlin プラグインが置き換えられます。これにより、AGP との統合が簡素化され、非推奨の API の使用が回避され、場合によってはパフォーマンスが向上します。

Android Gradle プラグイン 9 には、Kotlin Gradle プラグイン 2.2.0 のランタイム依存関係があります。これは、Kotlin の組み込みサポートに必要な最小バージョンです。

組み込みの Kotlin をオプトアウトするには、android.builtInKotlin=false を設定します。オプトアウトしていて、古いバージョンの Kotlin Gradle プラグインを使用する必要がある場合は、ダウングレードを強制できます。

buildscript {
    dependencies {
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") {
            version { strictly("2.0.0") } // or another version that you want to use
        }
    }
}

動作の変更

Android Gradle プラグイン 9.0 には、次の新しい動作があります。

動作 推奨事項
Android Gradle プラグイン 9.0 は、デフォルトで NDK バージョン r28c を使用します。 使用する NDK バージョンを明示的に指定することを検討してください。
Android Gradle プラグイン 9.0 では、デフォルトで、ライブラリのコンシューマーが同じかそれ以上のコンパイル SDK バージョンを使用する必要があります。 ライブラリを使用する場合は、同じまたはそれ以上のコンパイル SDK を使用します。これが不可能な場合や、公開するライブラリの利用者に切り替えのための時間をさらに与えたい場合は、AarMetadata.minCompileSdk を明示的に設定します。

AGP 9.0 には、次の Gradle プロパティのデフォルトの更新が含まれています。これにより、アップグレード時に AGP 8.13 の動作を維持するかどうかを選択できます。

プロパティ 関数 AGP 8.13 から AGP 9.0 への変更 推奨事項
android.newDsl android ブロックの以前の実装を公開せずに、新しい DSL インターフェースを使用します。
これは、android.applicationVariants などの以前のバリアント API にアクセスできなくなることも意味します。
falsetrue オプトアウトするには、android.newDsl=false を設定します。
プロジェクトで使用するすべてのプラグインとビルドロジックに互換性があることが確認できたら、オプトアウトを削除します。
android.builtInKotlin org.jetbrains.kotlin.android プラグインを使用せずに、Android Gradle プラグインで Kotlin コードを直接コンパイルするサポートを有効にしました。 falsetrue 可能であれば、org.jetbrains.kotlin.android プラグインの使用を削除して、Kotlin の組み込みを採用します。そうでない場合は、android.builtInKotlin=false を設定してオプトアウトします。
android.uniquePackageNames 各ライブラリに個別のパッケージ名があることを強制します。 falsetrue プロジェクト内のすべてのライブラリに一意のパッケージ名を指定します。それが不可能な場合は、移行中にこのフラグを無効にできます。
android.dependency.useConstraints 構成間の依存関係制約の使用を制御します。
AGP 9.0 のデフォルトは false で、アプリのデバイステスト(AndroidTest)でのみ制約を使用します。これを true に設定すると、8.13 の動作に戻ります。
truefalse 依存関係の制約は、必要な場合を除き、どこでも使用しないでください。このフラグの新しいデフォルトを受け入れると、プロジェクトのインポート プロセスで最適化も有効になります。これにより、多数の Android ライブラリ サブプロジェクトを含むビルドのインポート時間が短縮されます。
aandroid.enableAppCompileTimeRClass アプリケーションのコードを最終版ではない R クラスに対してコンパイルし、アプリケーションのコンパイルをライブラリのコンパイルと一致させます。
これにより、増分性が向上し、リソース処理フローのパフォーマンスを最適化するための道が開かれます。
falsetrue 多くのプロジェクトでは、ソースを変更せずに新しい動作を採用できます。R クラスのフィールドが定数を必要とする場所(switch case など)で使用されている場合は、連鎖した if 文を使用するようにリファクタリングします。
android.sdk.defaultTargetSdkToCompileSdkIfUnset アプリとテストのターゲット SDK バージョンのデフォルト値としてコンパイル SDK バージョンを使用します。
この変更前は、ターゲット SDK バージョンはデフォルトで最小 SDK バージョンになっていました。
falsetrue アプリとテストのターゲット SDK バージョンを明示的に指定します。
android.onlyEnableUnitTestForTheTestedBuildType テスト対象のビルドタイプの単体テスト コンポーネントのみを作成します。
デフォルトのプロジェクトでは、これによりデバッグ用の単一の単体テストが生成されます。以前の動作では、デバッグまたはリリース用に単体テストが実行されていました。
falsetrue プロジェクトでデバッグとリリース両方のテストを実行する必要がない場合は、変更は必要ありません。
android.proguard.failOnMissingFiles AGP DSL で指定されたキープファイルがディスクに存在しない場合、エラーでビルドを失敗させます。この変更前は、ファイル名のタイプミスがあると、ファイルは無視されていました。 falsetrue 無効な ProGuard ファイルの宣言を削除
android.r8.optimizedResourceShrinking クラスと Android リソースをまとめて考慮することで、R8 が保持する Android リソースを減らすことができます。 falsetrue プロジェクトの保持ルールがすでに完了している場合は、変更は必要ありません。
android.r8.strictFullModeForKeepRules クラスが保持されるときにデフォルトのコンストラクタを暗黙的に保持しないことで、R8 が保持するものを減らすことができます。つまり、-keep class A-keep class A { <init>(); }
を意味しなくなります。
falsetrue プロジェクトの保持ルールがすでに完了している場合は、変更は必要ありません。

デフォルトのコンストラクタを保持する必要がある場合は、プロジェクトの保持ルールで -keep class A-keep class A { <init>(); } に置き換えます。
android.defaults.buildfeatures.shaders すべてのサブプロジェクトでシェーダー コンパイルを有効にします。 truefalse シェーダーを含むサブプロジェクトでのみシェーダー コンパイルを有効にするには、それらのプロジェクトの Gradle ビルドファイルで次のように設定します。
android {
  buildFeatures {
    shaders = true
  }
}

削除された機能

Android Gradle プラグイン 9.0 では、次の機能が削除されます。

変更された DSL

Android Gradle プラグイン 9.0 には、次の破壊的な DSL の変更が含まれています。

DSL を削除しました

Android Gradle プラグイン 9.0 では、次のものが削除されています。

削除された Gradle プロパティ

次の Gradle プロパティは、デフォルトで有効になっている機能をグローバルに無効にする方法として最初に追加されました。

これらの機能は、AGP 8.0 以下ではデフォルトで無効になっています。これらの機能を使用するサブプロジェクトでのみ有効にして、ビルドをより効率的にします。

プロパティ 関数 交換
android.defaults.buildfeatures.aidl すべてのサブプロジェクトで AIDL コンパイルを有効にします。 AIDL ソースがあるサブプロジェクトでのみ AIDL コンパイルを有効にするには、それらのプロジェクトの Gradle ビルドファイルで次のプロパティを設定します。
AIDL ソースを含む各サブプロジェクトの Gradle ビルドファイル内の
android {
  buildFeatures {
    aidl = true
  }
}
android.defaults.buildfeatures.renderscript すべてのサブプロジェクトで RenderScript コンパイル を有効にします。 レンダースクリプト ソースがあるサブプロジェクトでのみレンダースクリプト コンパイルを有効にするには、それらのプロジェクトの Gradle ビルドファイルで次のプロパティを設定します。
android {
  buildFeatures {
    renderScript = true
  }
}

削除された API

Android Gradle プラグイン 9.0 では、次のものが削除されています。

  • 非推奨となり無効化された BaseExtension.registerTransform API。これは、AGP 4.2 以下で実行することをターゲットにしながら、最新の AGP バージョンに対してコンパイルできるようにするためにのみ残されていました。

適用される Gradle プロパティ

次の Gradle プロパティを設定すると、AGP 9.0 はエラーをスローします。

これらのプロパティを使用するプロジェクトは、Android Gradle プラグイン Upgrade Assistant を使用しても AGP 9.0 にアップグレードされません。

プロパティ 関数
android.r8.integratedResourceShrinking リソースの縮小は常に R8 の一部として実行されるようになり、以前の実装は削除されました。