Trình bổ trợ Android cho Gradle 9.2.0 (tháng 4 năm 2026)

Trình bổ trợ Android cho Gradle 9.2 là một bản phát hành phụ bao gồm nhiều tính năng và cải tiến mới.

Khả năng tương thích

Cấp độ API tối đa mà Trình bổ trợ Android cho Gradle 9.2 hỗ trợ là API cấp 37.0. Sau đây là thông tin khác về khả năng tương thích:

Phiên bản tối thiểu Phiên bản mặc định Lưu ý
Gradle 9.4.1 9.4.1 Để tìm hiểu thêm, hãy xem phần cập nhật Gradle.
Công cụ tạo SDK 36.0.0 36.0.0 Cài đặt hoặc định cấu hình Công cụ tạo SDK.
NDK Không áp dụng 28.2.13676358 Cài đặt hoặc định cấu hình phiên bản khác của NDK.
JDK 17 17 Để tìm hiểu thêm, hãy xem phần cài đặt phiên bản JDK.

Báo cáo kiểm thử và phạm vi hợp nhất

AGP 9.2.0-alpha07 giới thiệu các tác vụ để tạo trang tổng quan HTML hợp nhất kết quả kiểm thử và phạm vi từ nhiều loại kiểm thử (đơn vị và đo lường), mô-đun và biến thể bản dựng, cung cấp thông tin tổng quan toàn diện trong một trang tổng quan. Để biết thêm thông tin, hãy xem phần Tạo báo cáo mức độ sử dụng mã hợp nhấtXem báo cáo kiểm thử hợp nhất.

Thay đổi về R8

Các thay đổi sau đây về R8 được đưa vào AGP 9.2.0.

Ngữ nghĩa -keepattributes nghiêm ngặt hơn để giữ lại chú thích không hiển thị trong thời gian chạy

Không thể đọc chú thích không hiển thị trong thời gian chạy. Do đó, D8 sẽ loại bỏ vô điều kiện các chú thích không hiển thị trong thời gian chạy mà không có lựa chọn thay đổi điều này.

Để tương thích với ProGuard, R8 hỗ trợ xuất các chú thích không hiển thị trong thời gian chạy. Tuy nhiên, khi biên dịch sang DEX, thường thì không bao giờ giữ lại các chú thích không hiển thị trong thời gian chạy. Tuy nhiên, bạn thường nên đưa quy tắc tiện lợi -keepattributes *Annotation* (trực tiếp hoặc gián tiếp từ các quy tắc giữ lại của người dùng) để R8 giữ lại các chú thích hiển thị trong thời gian chạy. Rất tiếc, điều này cũng dẫn đến việc giữ lại các chú thích không hiển thị trong thời gian chạy.

Để giảm thiểu vấn đề này và phù hợp hơn với hành vi của D8, các mẫu -keepattributes có ký tự đại diện sẽ không còn khớp với RuntimeInvisibleAnnotations, RuntimeInvisibleParameterAnnotationsRuntimeInvisibleTypeAnnotations. Do đó, các chú thích không hiển thị trong thời gian chạy sẽ chỉ được giữ lại nếu tên thuộc tính được đề cập rõ ràng mà không có ký tự đại diện.

Hiện tại, không có quy tắc nào sau đây giữ lại các chú thích không hiển thị trong thời gian chạy:

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

Để giữ lại các chú thích không hiển thị trong thời gian chạy, hãy sử dụng quy tắc sau:

-keepattributes RuntimeInvisibleAnnotations,
                RuntimeInvisibleParameterAnnotations,
                RuntimeInvisibleTypeAnnotations

Hỗ trợ tên phủ định trong các quy tắc thành viên

Ngôn ngữ cấu hình đã được mở rộng để bạn có thể khớp với các mẫu tên thành viên phủ định.

Ví dụ: để khớp với tất cả các phương thức không kết thúc bằng "ForTesting", hãy sử dụng quy tắc sau:

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

Các mẫu tên thành viên cũng có thể bị phủ định trong điều kiện tiên quyết của các quy tắc -if. Nếu một mẫu tên thành viên phủ định chứa ký tự đại diện, thì không thể tham chiếu ngược lại các ký tự đại diện đó trong quy tắc hệ quả -if.

Vấn đề đã khắc phục

Trình bổ trợ Android cho Gradle 9.2.1

Vấn đề đã khắc phục
Trình bổ trợ Android cho Gradle
java.lang.ClassNotFoundException: Không tìm thấy lớp "com.android.tools.r8.RecordTag" sau khi nâng cấp gradle lên 9.2.0

Trình bổ trợ Android cho Gradle 9.2.0

Vấn đề đã khắc phục
Trình bổ trợ Android cho Gradle
Cảnh báo người dùng nếu họ có commonTest nhưng quên withHostTestBuilder
[fused lib - public] OkHttp bao gồm các nguồn
Không chạy được androidDeviceTest với phần giữ chỗ tệp kê khai trong thư viện (AGP 9.0.0 có trình bổ trợ com.android.kotlin.multiplatform.library)
AGP sẽ cảnh báo nếu người dùng có src/androidDeviceTest/java khi tắt java
AGP 9.0 Không có androidComponents.onVariant tương đương cho applicationVariants.all.mergeAssetsProvider
Tệp `*.xml.flat` chứa đường dẫn tệp tuyệt đối
R8D8ThreadPoolBuildService chưa được đăng ký
Lỗi JdkImageTransform với JDK 26
Tự động mã hoá minAgpVersion trong siêu dữ liệu AAR trong AGP 10.0
Đổi tên APK bằng DSL AGP mới
Lỗi khi truy cập (nhưng không đánh giá) bootClasspath IllegalStateException: targetCompatibility chưa được hoàn thiện
keepRules sourceset không hoạt động cho thư viện
Nhúng nội dung khai báo khả năng tương thích CC trong AGP
Cập nhật phần phụ thuộc của trình bổ trợ Kotlin cho Gradle lên 2.3.10
Cho phép compileSdk cao hơn cho các bài kiểm thử so với main
Tìm lỗi mã nguồn
Lỗi chính tả trong thông báo tìm lỗi mã nguồn
Cửa sổ ngữ cảnh bị cắt ngắn trong báo cáo SARIF tìm lỗi mã nguồn do con trỏ bù bị kẹt trong `SarifReporter.kt`
Ứng dụng tìm lỗi mã nguồn cho Gradle thiếu một tính năng quan trọng khiến ứng dụng này không đáng tin cậy
Lỗi tìm lỗi mã nguồn khi tính năng rút gọn tài nguyên bị tắt
AGP 9 Tìm lỗi mã nguồn báo cáo WrongConstant khi sử dụng các hằng số IntDef lồng nhau
Lỗi tìm lỗi mã nguồn khi tính năng rút gọn tài nguyên bị tắt
Tích hợp công cụ tìm lỗi mã nguồn
Android Lint không thành công với các lượt kiểm tra tìm lỗi mã nguồn tuỳ chỉnh được biên dịch thành mã byte Java 21
Các tác vụ tìm lỗi mã nguồn cho Gradle bỏ qua cờ --quiet
Trình rút gọn (R8)
Việc nhắm đến Java 11 dường như làm hỏng d8