Android Gradle プラグイン 9.2.0(2026 年 4 月)

Android Gradle プラグイン 9.2 はマイナー リリースで、さまざまな新機能や改善措置が組み込まれています。

互換性

Android Gradle プラグイン 9.2 でサポートされる最大 API レベルは API レベル 36.1 です。その他の互換性情報は以下のとおりです。

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

統合されたカバレッジ レポートとテストレポート

AGP 9.2.0-alpha07 では、さまざまなテストタイプ(単体テストとインストルメンテーション テスト)、モジュール、ビルド バリアントのテスト結果とカバレッジを統合する HTML ダッシュボードを生成するタスクが導入され、1 つのダッシュボードで包括的な概要を確認できるようになりました。詳細については、統合コード カバレッジ レポートを生成する統合テストレポートを表示するをご覧ください。

R8 の変更

AGP 9.2.0 には次の R8 の変更が含まれています。

実行時に非表示のアノテーションを保持するためのより厳格な -keepattributes セマンティクス

実行時に非表示のランタイム アノテーションは、実行時に読み取ることができません。そのため、D8 はランタイム不可視のアノテーションを無条件で削除します。この動作を変更することはできません。

ProGuard との互換性を確保するため、R8 は実行時に不可視のアノテーションの出力をサポートしています。ただし、DEX にコンパイルするときは、通常、実行時に非表示のアノテーションは保持されません。ただし、R8 が実行時に可視のアノテーションを保持するように、便利なルール -keepattributes *Annotation* を(直接的またはコンシューマーの keep ルールから間接的に)含めるのが一般的です。残念ながら、この方法では実行時に非表示のアノテーションも保持されてしまいます。

この問題を軽減し、D8 の動作によりよく一致させるため、ワイルドカードを含む -keepattributes パターンは RuntimeInvisibleAnnotationsRuntimeInvisibleParameterAnnotationsRuntimeInvisibleTypeAnnotations に一致しなくなりました。その結果、ランタイム不可視のアノテーションは、ワイルドカードなしで属性名が明示的に指定されている場合にのみ保持されます。

次のルールでは、実行時に非表示のアノテーションは保持されなくなります。

-keepattributes *
-keepattributes *Annotation*
-keepattributes *Invisible*

実行時に非表示のアノテーションを保持するには、次のルールを使用します。

-keepattributes RuntimeInvisibleAnnotations,
                RuntimeInvisibleParameterAnnotations,
                RuntimeInvisibleTypeAnnotations

メンバー ルールでの否定名のサポート

構成言語が拡張され、否定されたメンバー名パターンに一致できるようになりました。

たとえば、「ForTesting」で終わらないすべてのメソッドを照合するには、次のルールを使用します。

-keepclassmembers class com.example.MyClass {
  *** !*ForTesting(...);
}

メンバー名のパターンは、-if ルールの前提条件で否定することもできます。否定されたメンバー名パターンにワイルドカードが含まれている場合、そのようなワイルドカードを -if 結果ルールで後方参照することはできません。

解決済みの問題

Android Gradle プラグイン 9.2.0-alpha04

修正された問題
Android Gradle プラグイン
新しい AGP DSL を使用して APK の名前を変更する
bootClasspath にアクセス(評価はしない)する際のエラー IllegalStateException: targetCompatibility is not yet finalized

Android Gradle プラグイン 9.2.0-alpha03

修正された問題
Android Gradle プラグイン
JDK 26 での JdkImageTransform の失敗
AGP 10.0 で AAR メタデータに minAgpVersion を自動的にエンコード
lint
`SarifReporter.kt` のオフセット ポインタがスタックしたため、Lint SARIF レポートのコンテキスト ウィンドウが切り捨てられる
Lint Gradle クライアントに重要な機能が欠落しており、信頼性に欠ける
lint の統合
Lint Gradle タスクが --quiet フラグを無視する

Android Gradle プラグイン 9.2.0-alpha02

修正された問題
Android Gradle プラグイン
AGP 9.0 で applicationVariants.all.mergeAssetsProvider に相当する androidComponents.onVariant がない
`*.xml.flat` ファイルに絶対ファイルパスが含まれる
R8D8ThreadPoolBuildService が登録されていない
lint の統合
Java 21 バイトコードにコンパイルされたカスタム lint チェックで Android Lint が失敗する

Android Gradle プラグイン 9.2.0-alpha01

修正された問題
Android Gradle プラグイン
commonTest があるのに withHostTestBuilder を忘れた場合にユーザーに警告
[fused lib - public] OkHttp にソースが含まれる
ライブラリにマニフェスト プレースホルダがある場合、androidDeviceTest を実行できない(AGP 9.0.0 と com.android.kotlin.multiplatform.library プラグイン)
AGP は、java が無効になっている src/androidDeviceTest/java がある場合に警告するべき
lint
メッセージのタイプミスをリントする