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 nhỏ bao gồm nhiều tính năng và điểm 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à cấp độ API 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 hợp nhất về mức độ phù hợp và kiểm thử

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à mức độ phù hợp của 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 duy nhất. Để 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.

Các thay đổi về R8

AGP 9.2.0 có các thay đổi sau đây về R8.

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

Không thể đọc chú thích ẩn 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 chú thích không hiển thị trong thời gian chạy. Nhưng khi biên dịch sang DEX, các chú thích không hiển thị trong thời gian chạy thường không bao giờ được giữ lại. Tuy nhiên, thông thường, bạn nên thêm quy tắc thuận tiện -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 có thể nhìn thấy 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 nữa. 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 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ữ 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 quy tắc thành viên

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

Ví dụ: để so khớp 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(...);
}

Bạn cũng có thể phủ định mẫu tên thành viên trong điều kiện tiên quyết của các quy tắc -if. Nếu mẫu tên thành viên phủ định chứa ký tự đại diện, thì các ký tự đại diện đó không thể được tham chiếu ngược 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: Didn't find class "com.android.tools.r8.RecordTag" (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 thể chạy androidDeviceTest bằng 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 java bị vô hiệu hoá
AGP 9.0 Không có androidComponents.onVariant tương đương với applicationVariants.all.mergeAssetsProvider
Các 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 tất
Nguồn keepRules không hoạt động đối với các thư viện
Nhúng nội dung khai báo về khả năng tương thích của CC vào 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 kiểm thử so với chính
Tìm lỗi mã nguồn
Lỗi chính tả trong thông báo
Cửa sổ ngữ cảnh bị cắt ngắn trong báo cáo SARIF của Lint do con trỏ bù bị kẹt trong `SarifReporter.kt`
Ứng dụng Lint 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 Lint khi tính năng rút gọn tài nguyên bị tắt
AGP 9 Lint báo cáo WrongConstant khi sử dụng các hằng số IntDef lồng nhau
Lỗi Lint 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 gặp lỗi với các quy trình kiểm tra Lint tuỳ chỉnh được biên dịch thành mã byte Java 21
Các tác vụ Lint Gradle bỏ qua cờ --quiet
Trình rút gọn (R8)
Việc nhắm đến Java 11 có vẻ như làm gián đoạn d8