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ất và Xem 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, RuntimeInvisibleParameterAnnotations và RuntimeInvisibleTypeAnnotations.
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 |
|
|
Trình bổ trợ Android cho Gradle 9.2.0
| Vấn đề đã khắc phục | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Trình bổ trợ Android cho Gradle |
|
|||||||||||||||
| Tìm lỗi mã nguồn |
|
|||||||||||||||
| Tích hợp công cụ tìm lỗi mã nguồn |
|
|||||||||||||||
| Trình rút gọn (R8) |
|
|||||||||||||||