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 を実行できない(com.android.kotlin.multiplatform.library プラグインを使用する AGP 9.0.0)
Java が無効になっている状態で src/androidDeviceTest/java がある場合、AGP が警告を出す必要がある
lint
メッセージの lint のスペルミス