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

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

互換性

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

最小バージョン デフォルトのバージョン 備考
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 ダッシュボードを生成するタスクが導入されました。これにより、単一のダッシュボードで包括的な概要を確認できます。詳細については、統合コード カバレッジ レポートを生成する統合テストレポートを表示するをご覧ください。

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.1

修正された問題
Android Gradle プラグイン
Gradle を 9.2.0 にアップグレードした後、「java.lang.ClassNotFoundException: Didn't find class "com.android.tools.r8.RecordTag"」というエラーが発生する

Android Gradle プラグイン 9.2.0

修正された問題
Android Gradle プラグイン
commonTest があるのに withHostTestBuilder を忘れた場合はユーザーに警告
[fused lib - public] OkHttp にソースが含まれる
ライブラリにマニフェスト プレースホルダがある場合、androidDeviceTest を実行できない(AGP 9.0.0 と com.android.kotlin.multiplatform.library プラグイン)
AGP は、java が無効になっている src/androidDeviceTest/java がある場合に警告するべき
AGP 9.0 で applicationVariants.all.mergeAssetsProvider に相当する androidComponents.onVariant がない
`*.xml.flat` ファイルに絶対ファイルパスが含まれている
R8D8ThreadPoolBuildService が登録されていない
JDK 26 での JdkImageTransform の失敗
AGP 10.0 で AAR メタデータに minAgpVersion を自動的にエンコード
新しい AGP DSL を使用して APK の名前を変更する
bootClasspath にアクセスする(評価しない)際のエラー IllegalStateException: targetCompatibility is not yet finalized
keepRules ソースセットがライブラリで機能しない
CC 互換性宣言を AGP に埋め込む
Kotlin Gradle プラグインの依存関係を 2.3.10 に更新
テストの compileSdk をメインより高くできるようにする
lint
メッセージの誤字脱字を lint でチェック
`SarifReporter.kt` のオフセット ポインタがスタックしたため、Lint SARIF レポートのコンテキスト ウィンドウが切り捨てられる
Lint Gradle クライアントに重要な機能が欠落しており、信頼性に欠ける
不要なリソースの削除が無効になっている場合の Lint エラー
AGP 9 の Lint が、ネストされた IntDef 定数を使用している場合に WrongConstant を報告する
不要なリソースの削除が無効になっている場合の Lint エラー
lint の統合
Java 21 バイトコードにコンパイルされたカスタム lint チェックで Android Lint が失敗する
Lint Gradle タスクが --quiet フラグを無視する
圧縮ツール(R8)
Java 11 をターゲットにすると d8 が壊れる