Trình bổ trợ Android cho Gradle 8.3.0 (tháng 2 năm 2024)

Trình bổ trợ Android cho Gradle 8.3.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.3 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.4 8.4 Để 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.

Sau đây là các tính năng mới trong trình bổ trợ Android cho Gradle 8.3.

Phát hành bản vá

Dưới đây là danh sách các bản vá đã phát hành trong Android Studio Iguana và trình bổ trợ Android cho Gradle 8.3.

Android Studio Iguana | 2023.2.1 Bản vá 2 và AGP 8.3.2 (tháng 4 năm 2024)

Bản cập nhật nhỏ này sửa các lỗi này.

Android Studio Iguana | 2023.2.1 Bản vá 1 và AGP 8.3.1 (tháng 3 năm 2024)

Bản cập nhật nhỏ này sửa các lỗi này.

Hỗ trợ Danh mục phiên bản Gradle

Android Studio hỗ trợ Danh mục phiên bản Gradle dựa trên TOML, một tính năng cho phép bạn quản lý các phần phụ thuộc ở một vị trí trung tâm và chia sẻ các phần phụ thuộc trên các mô-đun hoặc dự án. Android Studio hiện giúp bạn dễ dàng định cấu hình danh mục phiên bản thông qua các đề xuất của trình chỉnh sửa và tích hợp với hộp thoại Project Structure (Cấu trúc dự án). Tìm hiểu cách thiết lập và định cấu hình Danh mục phiên bản Gradle hoặc cách di chuyển bản dựng sang danh mục phiên bản.

Hoàn tất mã và điều hướng

Android Studio cung cấp tính năng hoàn thành mã khi bạn chỉnh sửa danh mục phiên bản ở định dạng tệp TOML hoặc thêm phần phụ thuộc từ danh mục phiên bản vào tệp bản dựng. Để sử dụng tính năng hoàn thành mã, hãy nhấn tổ hợp phím Ctrl+Space (Command+Space trên macOS). Ngoài ra, bạn có thể nhanh chóng chuyển từ tham chiếu phần phụ thuộc trong tệp build.gradle của ứng dụng đến vị trí phần phụ thuộc đó được khai báo trong danh mục phiên bản bằng cách nhấn tổ hợp phím Ctrl+b (Command+b trên macOS).

Hoàn tất mã khi thêm phần phụ thuộc

Tích hợp với hộp thoại Project Structure (Cấu trúc dự án)

Nếu dự án của bạn sử dụng danh mục phiên bản được xác định ở định dạng tệp TOML, bạn có thể chỉnh sửa các biến đã xác định ở đó thông qua chế độ xem Variables (Biến) trong hộp thoại Project Structure (Cấu trúc dự án) (File > Project Structure > Variables (Tệp > Cấu trúc dự án > Biến)) trong Android Studio. Đối với mỗi danh mục phiên bản, sẽ có một trình đơn thả xuống liệt kê các biến trong danh mục đó. Để chỉnh sửa một biến, hãy nhấp vào giá trị của biến đó rồi ghi đè biến đó. Khi bạn lưu các thay đổi này, tệp TOML sẽ được cập nhật tương ứng.

Các biến từ danh mục phiên bản trong hộp thoại Project Structure (Cấu trúc dự án)

Bạn cũng có thể cập nhật các phần phụ thuộc trong chế độ xem Dependencies (Phần phụ thuộc) của hộp thoại Project Structure (Cấu trúc dự án) (File > Project Structure > Dependencies (Tệp > Cấu trúc dự án > Phần phụ thuộc)). Để cập nhật phiên bản bằng hộp thoại Project Structure (Cấu trúc dự án), hãy chuyển đến mô-đun và phần phụ thuộc mà bạn muốn chỉnh sửa, sau đó cập nhật trường Requested Version (Phiên bản đã yêu cầu). Khi bạn lưu các thay đổi này, tệp TOML sẽ được cập nhật cho phù hợp. Xin lưu ý rằng nếu phiên bản phần phụ thuộc được xác định bằng một biến, thì việc cập nhật phiên bản trực tiếp theo cách này sẽ thay thế biến đó bằng một giá trị được mã hoá cứng. Ngoài ra, hãy lưu ý rằng việc xoá một phần phụ thuộc khỏi tệp bản dựng, cho dù bạn có sử dụng hộp thoại Project Structure (Cấu trúc dự án) hay không, đều không xoá phần phụ thuộc đó khỏi danh mục phiên bản.

Phần phụ thuộc từ danh mục phiên bản trong hộp thoại Project Structure (Cấu trúc dự án)

Các vấn đề và hạn chế đã biết

Sau đây là các vấn đề hoặc hạn chế đã biết về tính năng hỗ trợ Danh mục phiên bản Gradle trong Android Studio.

  • Lỗi làm nổi bật phần khai báo bí danh trình bổ trợ trong tệp tập lệnh Kotlin: khi bạn thêm phần khai báo trình bổ trợ ở dạng alias(libs.plugins.example), trình chỉnh sửa sẽ thêm một đường gạch dưới màu đỏ bên dưới phần libs. Đây là vấn đề đã biết trong Gradle phiên bản 8.0 trở xuống và sẽ được giải quyết trong bản phát hành Gradle trong tương lai.

  • Android Studio chỉ hỗ trợ danh mục phiên bản ở định dạng TOML: hiện tại, tính năng hỗ trợ hoàn thành mã, điều hướng và hộp thoại Cấu trúc dự án của Android Studio chỉ có sẵn cho các danh mục phiên bản được xác định ở định dạng tệp TOML. Tuy nhiên, bạn vẫn có thể thêm danh mục phiên bản ngay trong tệp settings.gradle và sử dụng các phần phụ thuộc của danh mục đó trong dự án.

  • Không hỗ trợ điều hướng cho tệp bản dựng KTS: thao tác điều hướng đến định nghĩa phần phụ thuộc trong danh mục phiên bản bằng cách sử dụng tổ hợp phím Control+nhấp (Command+nhấp trên macOS) chưa được hỗ trợ cho các tệp bản dựng được viết bằng tập lệnh Kotlin.

  • Trợ lý Firebase thêm các phần phụ thuộc trực tiếp vào tập lệnh bản dựng: Trợ lý Firebase thêm các phần phụ thuộc trực tiếp vào tập lệnh bản dựng thay vì thông qua danh mục phiên bản.

  • Không hỗ trợ chức năng "Tìm cách sử dụng": chưa hỗ trợ việc tìm cách sử dụng biến danh mục phiên bản trong các tệp bản dựng khác, cho dù tệp bản dựng đó có ở KTS hay Groovy. Tức là việc sử dụng tổ hợp phím Control + nhấp chuột (Command + nhấp chuột trên macOS) trên định nghĩa biến trong danh mục phiên bản sẽ không dẫn đến các tệp bản dựng nơi biến được sử dụng.

  • Hộp thoại Cấu trúc dự án trong Android Studio hiển thị nhiều tệp danh mục nếu các tệp đó nằm trong thư mục gradle gốc, nhưng không hiển thị danh mục cho bản dựng tổng hợp. Ví dụ: nếu bạn có hai tệp danh mục (một tệp cho ứng dụng và một tệp cho bản dựng tổng hợp), thì hộp thoại Cấu trúc dự án sẽ chỉ hiển thị tệp danh mục ứng dụng. Bạn có thể sử dụng bản dựng tổng hợp, nhưng phải trực tiếp chỉnh sửa tệp TOML của bản dựng đó.

Thông tin chi tiết khác về SDK: vấn đề về chính sách

Android Studio hiển thị các cảnh báo lỗi mã nguồn trong tệp build.gradle.ktsbuild.gradle cũng như trong Hộp thoại cấu trúc dự án cho những SDK công khai có lỗi vi phạm chính sách của Play trong Chỉ mục SDK của Google Play. Bạn nên cập nhật mọi phần phụ thuộc vi phạm chính sách của Play vì những lỗi vi phạm này có thể khiến bạn không thể phát hành ứng dụng lên Google Play Console trong tương lai. Cảnh báo vi phạm chính sách bổ sung cho cảnh báo phiên bản lỗi thời mà Android Studio hiển thị.

Hỗ trợ phiên bản compileSdk của Android Studio

Android Studio sẽ hiện cảnh báo nếu dự án của bạn sử dụng compileSdk không được phiên bản Android Studio hiện tại hỗ trợ. Nếu có, bạn cũng nên chuyển sang một phiên bản Android Studio hỗ trợ compileSdk mà dự án của bạn sử dụng. Xin lưu ý rằng việc nâng cấp Android Studio cũng có thể yêu cầu bạn nâng cấp AGP. AGP cũng hiển thị cảnh báo trong cửa sổ công cụ Build (Bản dựng) nếu compileSdk mà dự án của bạn sử dụng không được phiên bản AGP hiện tại hỗ trợ.

Thay đổi về hành vi của trình tìm lỗi mã nguồn

Kể từ trình bổ trợ Android cho Gradle 8.3.0-alpha02, khi chạy công cụ tìm lỗi mã nguồn trên một mô-đun, các tác vụ phân tích tìm lỗi mã nguồn riêng biệt sẽ chạy cho các thành phần chính và thành phần kiểm thử của mô-đun. Lý do của thay đổi này là để cải thiện hiệu suất. Để quay lại hành vi trước đó, hãy đặt android.experimental.lint.analysisPerComponent=false trong tệp gradle.properties.

Tính năng rút gọn tài nguyên chính xác được bật theo mặc định

Tính năng rút gọn tài nguyên chính xác (xoá các mục không dùng đến khỏi tệp resources.arsc và loại bỏ các tệp tài nguyên không dùng đến) được bật theo mặc định. Khi tính năng rút gọn này được bật, bảng tài nguyên của bạn sẽ bị giảm và chỉ các mục nhập thư mục res được tham chiếu mới được đưa vào APK.

Để tắt tính năng rút gọn tài nguyên chính xác, hãy đặt android.enableNewResourceShrinker.preciseShrinking thành false trong tệp gradle.properties của dự án.

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

Trình bổ trợ Android cho Gradle 8.3.0

Vấn đề đã khắc phục
Trình bổ trợ Android cho Gradle
Không cần dùng đến bộ nhớ đệm bản dựng cho tác vụ PackageForUnitTest
[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
Quá trình tạo bản dựng mô hình AGP sẽ không thành công đối với các bản dựng kết hợp gradle lồng nhau
Trình thu gọn tài nguyên làm hỏng mã nhận dạng tài nguyên, dẫn đến sự cố trong thời gian chạy
Quá trình kiểm tra phiên bản Gradle tối thiểu không chạy trên bản dựng thứ hai và các bản dựng tiếp sau đó
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.4][bản nâng cấp] Thất bại trong kiểm thử tích hợp sau khi nâng cấp do sử dụng tính năng không dùng nữa trong trình bổ trợ Kotlin cho Gradle
Không kiểm tra sự tồn tại của tệp lớp phủ dành cho tệp kê khai trong giai đoạn định cấu hình
Đường liên kết đến tài liệu Gradle về lỗi MergeJavaResWorkAction bị hỏng
Gradle 8.1 phá vỡ cấu hình lưu vào bộ nhớ đệm do tệp .gradle/.android/analytics.settings
AGP không nên sử dụng ProjectComponentIdentifier.projectPath mà không có ProjectComponentIdentifier.build
Vui lòng giảm/xoá tính năng ghi nhật ký ở cấp thông tin cho AGP "Analytics other plugin to proto: …" (Trình bổ trợ khác của Analytics cho proto: …)
[Gradle 8.4][bản nâng cấp] Thao tác trên tệp trong quá trình định cấu hình trong ProcessJavaResTask làm hỏng cấu hình lưu vào bộ nhớ đệm
API biến thể để tải bảng biểu tượng (R.txt)
Trình bổ trợ độc lập tìm lỗi mã nguồn không xử lý phần phụ thuộc gradleApi() đúng cách
kDocs kém trên các lớp/thuộc tính AGP. "VariantOutput.enable" nên được thay thế bằng "VariantOutput.enable"
AGP 8.3.0-alpha02 không thể cài đặt các cấu hình phát hành trên máy chủ Windows
Thực thi "android.enableDexingArtifactTransform=true"
[Gradle 8.4][bản nâng cấp] Thất bại trong kiểm thử tích hợp sau khi nâng cấp do xử lý tệp trong giai đoạn cấu hình
AGP 8.3.0-alpha-02 – "Error: Failed to deserialize cached resource repository." (Lỗi: Không giải tuần tự được kho lưu trữ tài nguyên đã lưu vào bộ nhớ đệm.)
[Gradle 8.4][bản nâng cấp] Thất bại trong kiểm thử tích hợp sau khi nâng cấp do xử lý tệp trong giai đoạn cấu hình của TestLabBuildService
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
Việc chuyển đổi cấu phần phần mềm ASSETS khiến các vị trí đầu vào/đầu ra bị hỏng
Chuyển android.experimental.r8.dex-startup-optimization=true làm giá trị mặc định
Di chuyển sang API Căn chỉnh cấu hình Gradle mới
Không biên dịch được tài nguyên khi trình biên dịch Kotlin tìm cách cập nhật lên IDEA 21.3
Phản hồi get() với API Cấu phần phần mềm
Chuyển thuộc tính AGP "android.lint.printStackTrace" thành phiên bản ổn định
AGP 8.1.0: tính năng động: Sự phụ thuộc ngầm giữa exportReleaseConsumerProguardFiles và extractProguardFiles gây ra lỗi biên dịch
`variant.unitTest.jniLibs.addGeneratedSourceDirectory` có vẻ như không thực hiện được thao tác nào
Cập nhật trình phân tích cú pháp XML dùng trong AGP để tương thích với Gradle 8.4
Công cụ jacoco trong gói phát hành AGP 8.0.1 không có hiệu lực
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)
AGP 8.3.0-alpha11 tạo tệp APK phát hành gặp sự cố khi khởi động bằng android.content.res.Resources$NotFoundException
Chuyển thuộc tính AGP "android.lint.printStackTrace" thành phiên bản ổn định
Yêu cầu về tính năng: Nâng cấp com.android.build.api.extension.impl.CURRENT_AGP_VERSION lên một API công khai
Trình quản lý SDK nên ngừng gửi thông tin nhật ký spam tới stdout
Không thể sử dụng DexArchiveBuilderTaskDelegate với mô-đun thư viện chỉ có tài nguyên
Biến thể trình bổ trợ tuỳ chỉnh AGP7.4 toTransform cho tất cả mục gửi trùng lặp: ngoại lệ META-INF/MANIFEST.MF
Hỗ trợ các thẻ "Tệp kê khai" mới,
Đường liên kết đến "Dự án đã phân tách" trong phần cài đặt của Studio chuyển đến sai vị trí.
Vui lòng đưa ra các lựa chọn để thêm những nguồn được tạo trên Javadoc và SourceJar
Cần khắc phục nhanh sự khác biệt giữa compileSdk và phần phụ thuộc với minCompileSdkVersion
[Gradle] tools:overrideLibrary phải hỗ trợ dấu hoa thị (*)
Giao diện người dùng bị treo khi chỉnh sửa tệp kê khai
Không thiết lập được phiên bản JaCoCo trong AGP 8.2.0
Không thực hiện được tác vụ cài đặt Trình bổ trợ Android cho Gradle 8.2.0 trong dự án sử dụng các tính năng động
Không thực hiện được tác vụ cài đặt Trình bổ trợ Android cho Gradle 8.2.0 trong dự án sử dụng các tính năng động
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?
Tìm lỗi mã nguồn
[Tìm lỗi mã nguồn] TranslucentViewDetector gặp sự cố trong hàm filterIncident và khiến công cụ tìm lỗi mã nguồn tạo ra kết quả không chính xác
TranslucentViewDetector phải chấp nhận giá trị "phía sau"
Công cụ tìm lỗi mã nguồn của Android sẽ gặp lỗi "thuộc tính "variantInputs.name" không có giá trị được định cấu hình" trên thư viện KMP
TranslucentViewDetector báo cáo sai dòng trong tệp kê khai
lintDebug báo cáo sai cảnh báo UseTomlInstead khi sử dụng các phần phụ thuộc của dự án
Sự cố không mong muốn trong một dự án khác bị Android Lint gắn cờ
Tính năng kiểm tra TÌM LỖI MÃ NGUỒN phát hiện dương tính giả đối với Tài nguyên không dùng đến bên trong trình nghe liên kết và lượt nhấp
Không tải được tệp jar tuỳ chỉnh cho tính năng kiểm tra tìm lỗi mã nguồn: Không truyền được nút đến TreeNode
Không gọi được công cụ tìm lỗi mã nguồn visitAnnotationUsage để sử dụng những lớp đã chú thích trong các phần khai báo biến
Tìm lỗi mã nguồn 31.0.2 không thành công với java.util.NoSuchElementException: Mảng bị trống.
Không có cảnh báo tìm lỗi mã nguồn nào về kotlin.text.MatchNamedGroupCollection#get(String) yêu cầu API 26
lint:TypographyQuotes báo lỗi âm tính giả: nhiều dấu nháy đơn (có ký tự thoát) bị bỏ qua
Trình phát hiện InvalidId của công cụ tìm lỗi mã nguồn AGP 8.0.2 báo lỗi dương tính giả
Đã thêm các vấn đề về LintError vào đường cơ sở của công cụ tìm lỗi mã nguồn
Trình Quickfix Lint (sửa lỗi mã nguồn nhanh) không hoạt động, dẫn đến lỗi IDE
Lỗi thất bại trong kiểm thử không nhất quán do một phần của bản phân tích
Phần đánh dấu không hợp lệ cho một cảnh báo dương tính giả
Không gọi được công cụ tìm lỗi mã nguồn visitAnnotationUsage để sử dụng những lớp đã chú thích trong các phần khai báo biến
Trình xử lý tài nguyên không dùng đến có thể xoá tệp bản dựng Gradle
Tính năng kiểm tra tìm lỗi mã nguồn NewApi không hiểu trường cuối cùng "isAtleastU() && otherCondition()"
StackOverflow qua `LintClient.getSdkHome`
Android Studio/Công cụ tìm lỗi mã nguồn không cho bạn biết khi các phần phụ thuộc của "nền tảng" trở nên lỗi thời
Lỗi: không có đề xuất để cập nhật phần phụ thuộc Bảng kê khai thành phần của Firebase
Cấu trúc dự án (và Gradle (?)) không phát hiện ra các phần phụ thuộc trong Bảng kê khai thành phần của Firebase cần được nâng cấp lên phiên bản mới hơn.
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)
R8 không hoạt động sau khi nâng cấp từ AGP 8.0.2 lên 8.1.0
isShrinkResources tối ưu hoá quá mức trong 8.3.0-alpha11 đến alpha14
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ố
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
[R8 8.3.21] R8 8.3.21 lớn hơn R8 8.1.56 1,57 MB
[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
Kiểm thử SimpleKotlinEnumUnboxingTest không thành công trên bot kotlin_dev

Trình bổ trợ Android cho Gradle 8.3.1

Vấn đề đã khắc phục
Trình bổ trợ Android cho Gradle
Vấn đề xử lý dữ liệu đầu vào gia tăng MergeJavaResourcesTask
Tích hợp công cụ tìm lỗi mã nguồn
Công cụ tìm lỗi mã nguồn không thể phân giải các loại của nhóm tài nguyên đồng cấp trong AGP 8.3.0-rc02

Trình bổ trợ Android cho Gradle 8.3.2

Vấn đề đã khắc phục
Trình bổ trợ Android cho Gradle
AGP 8.3 có thể bị tắc nghẽn khi bật tính năng đơn giản hoá
AGP 8.3 làm hỏng tác vụ zipApksFor
Tích hợp công cụ tìm lỗi mã nguồn
Công cụ tìm lỗi mã nguồn không thể phân biệt phần phụ thuộc KMP