Android Gradle 外掛程式 9.2.0 版 (2026 年 4 月)

Android Gradle 外掛程式 9.2 是次要版本,內含多種新功能及改善項目。

相容性

Android Gradle 外掛程式 9.2 支援的最高 API 級別為 36.1。其他相容性資訊如下:

最低版本 預設版本 附註
Gradle 9.4.1 9.4.1 詳情請參閱「更新 Gradle」一節。
SDK 版本工具 36.0.0 36.0.0 安裝設定 SDK 建構工具。
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 時,通常不應保留執行階段不可見的註解。不過,一般做法是納入便利規則 -keepattributes *Annotation* (直接或間接來自消費者保留規則),讓 R8 保留執行階段可見的註解。很抱歉,這也會導致執行階段註解保持隱藏狀態。

為減輕這個問題並更符合 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 尚未完成

Android Gradle 外掛程式 9.2.0-alpha03

已修正問題
Android Gradle 外掛程式
JDK 26 導致 JdkImageTransform 失敗
在 AGP 10.0 中,自動將 minAgpVersion 編碼至 AAR 中繼資料
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 整合
Android Lint 無法使用編譯為 Java 21 位元組程式碼的自訂 Lint 檢查

Android Gradle 外掛程式 9.2.0-alpha01

已修正問題
Android Gradle 外掛程式
如果使用者有 commonTest,但忘記使用 withHostTestBuilder,系統會發出警告
[fused lib - public] OkHttp includes sources
無法在程式庫中使用資訊清單預留位置執行 androidDeviceTest (AGP 9.0.0,搭配 com.android.kotlin.multiplatform.library 外掛程式)
如果使用者已停用 Java,但有 src/androidDeviceTest/java,AGP 應發出警告
Lint
檢查訊息中的錯字