Trình bổ trợ Android cho Gradle 8.2.0 (tháng 11 năm 2023)

Trình bổ trợ Android cho Gradle 8.2.0 là một bản phát hành chính bao gồm nhiều tính năng và điểm cải thiện mới.

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

Cấp độ API tối đa mà trình bổ trợ Android cho Gradle 8.2 hỗ trợ là API cấp 34. Sau đây là một số 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 8.2 8.2 Để tìm hiểu thêm, hãy xem phần cập nhật Gradle.
Công cụ tạo SDK 34.0.0 34.0.0 Cài đặt hoặc định cấu hình Công cụ tạo SDK.
NDK Không áp dụng 25.1.8937393 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.

Macro mới để chỉ định đường dẫn JDK

#GRADLE_LOCAL_JAVA_HOME là một macro mới mà bạn có thể dùng để chỉ định đường dẫn JDK. Nhờ đó, bạn có thể chỉ định đường dẫn gốc Java dùng để thực thi trình nền Gradle (tiến trình nền) cho dự án của mình một cách an toàn và dễ dàng hơn. Lựa chọn đường dẫn được lưu trữ trong trường java.home của tệp .gradle/config.properties. Đặt trường này thông qua chế độ cài đặt JDK của Gradle trong Android Studio: File (Tệp) (hoặc Android Studio trên macOS) > Settings > Build, Execution, Deployment > Build Tools > Gradle (Cài đặt > Xây dựng, Thực thi, Triển khai > Công cụ xây dựng > Gradle).

Các dự án mới sẽ sử dụng #GRADLE_LOCAL_JAVA_HOME theo mặc định. Các dự án hiện có sẽ tự động được chuyển sang macro mới sau khi quá trình đồng bộ hoá thành công, trừ phi bạn đã sử dụng một macro như #JAVA_HOME.

Sau đây là các lợi ích chính của macro mới:

  • Bạn có thể sửa đổi đường dẫn JDK theo cách thủ công để kích hoạt quá trình đồng bộ hoá mà không cần mở trước dự án.
  • Có ít lỗi hơn liên quan đến các phiên bản JDK của dự án và Gradle không tương thích, vì chỉ có một nguồn đáng tin cậy duy nhất để lựa chọn JDK cho Gradle.

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

Trình bổ trợ Android cho Gradle 8.2.0

Vấn đề đã khắc phục
Trình bổ trợ Android cho Gradle
Các loại nguồn tuỳ chỉnh phải tạo ra các tập hợp nguồn có nhiều phiên bản
Tính năng kiểm tra phiên bản SDK không xử lý người dùng tiện ích SDK
DependenciesInfoBuilder cần có tài liệu + bản cập nhật API
Mục tiêu DexingNoClasspathTransform (minSdk >= 24) với Java 11 không thành công do thiếu các phần tử lồng nhau
DslExtension.Builder.extendProjectWith() không hoạt động theo mô tả trong Groovy
Thêm VariantSelector.withFlavor API không dùng kotlin.Pair
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) thiếu bộ nhớ đệm do `proguard.txt` thay đổi
Tệp kê khai sáp nhập của ứng dụng chứa các thuộc tính extractNativeLibs và useEmbeddedDex từ các phần phụ thuộc
AIDL không hoạt động với build-tools 33.0.0
AGP: Hiển thị đường dẫn đến công cụ AIDL và tệp AIDL khung ở dạng API công khai
Yêu cầu: cho phép IDE khắc phục lỗi "PermittedSubclasses requires ASM9"
Dùng mã byte mục tiêu 17 khi biên dịch AGP
Xoá VariantManager.getModifiedName
AndroidTest.packaging.jniLibs.keepDebugSymbols không ảnh hưởng đến gói androidTest
Tác vụ kiểm thử đo lường của GMD bị treo và không thành công kể cả khi bắt đầu lại
generateLocaleConfig trong agp 8.1.0 sử dụng thứ tự không xác định, phá vỡ các bản dựng có thể tái tạo
ProcessApplicationManifest.navigationJsons có các tệp chứa đường dẫn tuyệt đối
Bạn không được phép truy cập vào GradleBuildProject.Builder thông qua AnalyticsConfiguratorService sau khi tạo AnalyticsService
AndroidTest.packaging.jniLibs.keepDebugSymbols không ảnh hưởng đến gói androidTest
Các giá trị màu không hợp lệ vẫn được biên dịch
"replaceWith" cho VariantBuilder không chính xác
Gradle 8.1 phá vỡ cấu hình lưu vào bộ nhớ đệm do tệp .gradle/.android/analytics.settings
Thông báo về việc không dùng nữa không kèm theo `ReplaceWith`
Hướng dẫn cách tải phiên bản NDK mặc định
Trình bổ trợ Android cho Gradle yêu cầu cần phải có Java 17 thì mới chạy được.
ASM Transform và không tương thích với ToAppend()
Khắc phục LintErrors khi chạy lint với K2 UAST qua Gradle trên một dự án KMP
Hỗ trợ cho cấp Biến thể missingDimensionStrategy và có thể hỗ trợ cho loại bản dựng/phiên bản phù hợp với matchingFallback
`android.injected.studio.version` đã bị xoá trong Android Studio Giraffe
Thêm tính năng tắt AndroidXDependencyCheck
generateLocaleConfig trong agp 8.1.0 sử dụng thứ tự không xác định, phá vỡ các bản dựng có thể tái tạo
Thông báo rõ yêu cầu về phiên bản R8 / D8 trong siêu dữ liệu AAR (ví dụ: cho CoreLibraryDesugaring và API mới ngoài luồng)
Cảnh báo về đồng bộ hoá: "GradleBuildProject.Builder should not be accessed through AnalyticsConfiguratorService after AnalyticsService is created" (Không nên truy cập GradleBuildProject.Builder thông qua AnalyticsConfiguratorService sau khi tạo AnalyticsService)
Cập nhật lên Gradle 8.2 milestone hoặc RC
Không thể truy cập 'java.lang.Comparable'
androidResources không có trong mô-đun thư viện Android
Không thực hiện được tác vụ ':app:mergeReleaseClasses' sau khi Cập nhật AGP từ 8.0.2 lên 8.1.0
Gradle 8.1 phá vỡ cấu hình lưu vào bộ nhớ đệm do tệp .gradle/.android/analytics.settings
[AGP 8.1.0] Kiểm thử ./gradlew không thành công và hiện thông báo lỗi "Unable to find manifest output" (Không tìm thấy đầu ra tệp kê khai) nếu cả splits.abi.isEnable và testOptions.unitTests.isIncludeAndroidResources đều mang giá trị true
Android Studio Giraffe không tuân thủ versionCodeOverride bằng AGP 8.1
AGP 8.1.0 gỡ cài đặt ứng dụng sau khi chạy các hoạt động kiểm thử được đo lường – 7.4.2 thì không
Việc chuyển đổi một APK dẫn đến lỗi có ListingFileRedirectTask
PHÉP HỒI QUY HEDGEHOG: Nút Chạy bị trì hoãn vài giây (Đang tạo thông số kỹ thuật)
Dexer (D8)
Bật bản ghi gốc và các lớp kín khi tạo tệp dex cho min-api 34 trở lên
Tìm lỗi mã nguồn
Tính năng kiểm tra tìm lỗi mã nguồn Instantiated không xử lý tốt AppComponentFactory
Lint 8.2.0 alpha vẫn không hỗ trợ tính năng nhập hàm cấp cao nhất trong kotlin
Thêm lựa chọn để không thêm số dòng và cột trong đường cơ sở tìm lỗi mã nguồn
Thêm lựa chọn để không thêm số dòng và cột trong đường cơ sở tìm lỗi mã nguồn
Quy trình kiểm thử tìm lỗi mã nguồn không hỗ trợ các tính năng có trong ngôn ngữ Java 17
Bumblebee 2021.1.1 Patch 1 thông báo rằng phiên bản cũ hơn (20030203.000550) của commons-io là mới hơn bản 2.11.0.
Lint 8.2.0 alpha vẫn không hỗ trợ tính năng nhập hàm cấp cao nhất trong kotlin
Bumblebee 2021.1.1 Patch 1 thông báo rằng phiên bản cũ hơn (20030203.000550) của commons-io là mới hơn bản 2.11.0.
Android Studio đánh dấu không chính xác phiên bản được chỉ định là hết hạn.
Tìm lỗi mã nguồn bỏ qua vấn đề UseValueOf khi sử dụng K2 UAST
Sự cố không mong muốn trong một dự án khác bị Android Lint gắn cờ
Công cụ tìm lỗi mã nguồn của Android không hoạt động được ở thư viện KMP có `thuộc tính 'variantInputs.name' không có giá trị được định cấu hình.`
Tích hợp công cụ tìm lỗi mã nguồn
Sự cố về việc tìm lỗi mã nguồn DuplicatePlatformClasses trong phần phụ thuộc testImplementation
Trình rút gọn (R8)
java.lang.VerifyError: Lớp bị từ chối của trình xác minh
Bản dựng bị lỗi trên :minifyReleaseWithR8 khi dùng thư viện Apache POI
Kotlin 1.9 khiến R8 huỷ bỏ hàm lambda Kotlin nếu các giá trị nullchecks bị xoá

Trình bổ trợ Android cho Gradle 8.2.1

Vấn đề đã khắc phục
Trình bổ trợ Android cho Gradle
Không chạy tác vụ tạo tệp dex trên các lớp của dự án phụ khi các lớp đó đã được tạo tệp dex thông qua việc biến đổi cấu phần phần mềm
Trình bổ trợ Android cho Gradle gặp lỗi với JavaVersion.VERSION_11 và OpenJDK 21 ea
Dexer (D8)
Bản ghi đơn giản hoá dành cho Android U
Trình rút gọn (R8)
R8 tạo tệp dex bị hỏng, dẫn đến truyền ngoại lệ vào lớp trong thời gian chạy
R8 khiến giao diện thay đổi thành giao diện không truy cập được
Sự cố R8 Flurry SDK với AGP 8.2.0
Android – R8 khiến lớp con của LinearLayoutManager gặp sự cố
ClassCastException trong R8 khi tính năng đóng gói lại và rút gọn được bật, còn tính năng làm rối mã nguồn và tối ưu hoá bị tắt
R8 gặp sự cố trong BridgeAnalyzer.analyzeMethod
R8 phiên bản 8.2.33, sự cố thời gian chạy "java.lang.VerifyError: Loại không hợp lệ trên ngăn xếp toán hạng" sau khi nâng cấp

Trình bổ trợ Android cho Gradle 8.2.2

Vấn đề đã khắc phục
Trình bổ trợ Android cho Gradle
Không thiết lập được phiên bản JaCoCo trong AGP 8.2.0
Dexer (D8)
[thư viện đã đơn giản hoá] Thư viện đã đơn giản hoá phiên bản 2.1 không tương thích với các phiên bản trước của R8
Tính năng tối ưu hoá có chạy ngay cả chỉ với D8 không?
Trình rút gọn (R8)
[R8 8.3.21] R8 8.3.21 lớn hơn R8 8.1.56 1,57 MB
class.getInterfaces() trả về giá trị trống