Trình bổ trợ Android cho Gradle 7.1.0 (tháng 1 năm 2022)
Trình bổ trợ Android cho Gradle 7.1.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 tiến mới.
7.1.3 (Tháng Tư 2022)
Bản cập nhật nhỏ này bao gồm các bản sửa lỗi sau:
- Các vấn đề trùng lặp về lớp do R8 báo cáo
Để đọc danh sách toàn bộ bản sửa lỗi có trong bản phát hành này, hãy xem Bài đăng blog về Bản vá 3 của Android Studio Bumblebee.
7.1.2 (tháng 2 năm 2022)
Bản cập nhật nhỏ này bao gồm các bản sửa lỗi sau:
- Trình bổ trợ Android cho Gradle 7.1.0-rc01 không thực hiện được việc biến đổi mã byte ASM trong quá trình kiểm thử đơn vị
- Tính năng đồng bộ hoá Gradle không hoạt động với thông báo "Unable to load class "com.android.build.api.extensions.AndroidComponentsExtension"" (Không tải được lớp "com.android.build.api.extension.AndroidComponentsExtension").
- Không sử dụng được một số khối DSL mới qua Groovy DSL trong trình bổ trợ Android cho Gradle 7.0.0
- API xuất bản mới của AGP 7.1: jardoc jar được tạo không có chữ ký
- ClassesDataSourceCache phải sử dụng phiên bản Asm mới nhất
- Android Studio BumbleBee không phải lúc nào cũng triển khai các thay đổi mới nhất
Để đọc danh sách toàn bộ bản sửa lỗi có trong bản phát hành này, hãy xem bài đăng trên blog về Bản vá 2 của Android Studio Bumblebee.
7.1.1 (tháng 2 năm 2022)
Bản cập nhật nhỏ này tương ứng với việc phát hành Bản vá 1 của Android Studio Bumblebee.
Để đọc danh sách bản sửa lỗi có trong bản phát hành này, hãy xem bài đăng trên blog về Bản vá 1 của Android Studio Bumblebee.
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 | 7.2 | 7.2 | Để tìm hiểu thêm, hãy xem phần cập nhật Gradle. |
Công cụ tạo SDK | 30.0.3 | 30.0.3 | Cài đặt hoặc định cấu hình Công cụ tạo SDK. |
NDK | Không áp dụng | 21.4.7075529 | Cài đặt hoặc định cấu hình phiên bản khác của NDK. |
JDK | 11 | 11 | Để tìm hiểu thêm, hãy xem phần cài đặt phiên bản JDK. |
Tác vụ phân tích tìm lỗi mã nguồn hiện đã lưu được vào bộ nhớ đệm
AndroidLintAnalysisTask
hiện đã tương thích với bộ nhớ đệm bản dựng Gradle. Nếu bạn bật bộ nhớ đệm bản dựng bằng cách thiết lập org.gradle.caching=true
trong tệp gradle.properties
, trình phân tích tìm lỗi mã nguồn sẽ nhận được kết quả của bộ nhớ đệm bản dựng ngay khi có thể.
Tác vụ phân tích tìm lỗi mã nguồn thường là nút thắt cổ chai lớn nhất khi chạy tìm lỗi mã nguồn bằng trình bổ trợ Android cho Gradle. Vì vậy, việc bật bộ nhớ đệm bản dựng sẽ giúp cải thiện tốc độ bản dựng khi chạy tìm lỗi mã nguồn trong nhiều trường hợp. Nhờ đó, chẳng hạn như nếu có một dự án nhiều mô-đun và cần dọn sạch thư mục bản dựng trước khi chạy tìm lỗi mã nguồn trên máy chủ tích hợp liên tục (CI), bạn sẽ thấy hiệu suất cải thiện đáng kể.
Giờ đây, các mô-đun C/C++ có thể tham chiếu đến các mô-đun C/C++ khác trong cùng một dự án
Giờ đây, mô-đun Android trên Gradle có mã C/C++ có thể được thiết lập để tham chiếu đến các tệp tiêu đề và mã thư viện trong một mô-đun Gradle khác. Giao thức Prefab được dùng để giao tiếp tiêu đề và thư viện giữa các mô-đun Gradle.
Yêu cầu
-
Mô-đun tiêu thụ phải là
CMake
chứ không phảindk-build
. Việc hỗ trợ tạo bản dựng ndk- sẽ yêu cầu cập nhật NDK trong tương lai. Mô-đun phát hành có thể làCMake
hoặcndk-build
. -
Mô-đun consuming (sử dụng) phải bật
prefab
trong tệpbuild.gradle
.
android {
buildFeatures {
prefab true
}
}
- Mô-đun phát hành phải bật
prefabPublishing
trong tệpbuild.gradle
.
android {
buildFeatures {
prefabPublishing true
}
}
- Mô-đun consuming (sử dụng) phải tham chiếu đến mô-đun publishing (phát hành) bằng cách thêm một dòng vào tệp
build.gradle
của khốidependencies
. Ví dụ:
dependencies {
implementation project(':mylibrary')
}
- Mô-đun phát hành phải cho thấy một gói bằng mục
prefab
. Ví dụ:
android {
prefab {
mylibrary {
libraryName "libmylibrary"
headers "src/main/cpp/include"
}
}
}
- Tệp
CMakeLists.txt
của mô-đun sử dụng có thể dùngfind_package()
để tìm gói do mô-đun sản xuất phát hành. Ví dụ:
find_package(mylibrary REQUIRED CONFIG)
target_link_libraries(
myapplication
mylibrary::mylibrary)
- Phải có một STL cho toàn bộ ứng dụng. Ví dụ: cả mô-đun sử dụng và phát hành đều có thể dùng thư viện STL C++ chung.
android {
defaultConfig {
externalNativeBuild {
cmake {
arguments '-DANDROID_STL=c++_shared'
}
}
}
}
Để hiểu thêm về cách dùng AGP để định cấu hình cho người tiêu dùng và nhà sản xuất AAR gốc, hãy xem nội dung Các phần phụ thuộc gốc với AGP.
Cài đặt kho lưu trữ trong tệp settings.gradle
Khi một dự án mới được tạo trong Android Studio Bumblebee, tệp build.gradle
cấp cao nhất sẽ chứa khối plugins
, theo sau là mã để dọn dẹp thư mục bản dựng:
plugins {
id 'com.android.application' version '7.1.0-beta02' apply false
id 'com.android.library' version '7.1.0-beta02' apply false
id 'org.jetbrains.kotlin.android' version '1.5.30' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Chế độ cài đặt kho lưu trữ trước đây nằm trong tệp build.gradle
cấp cao nhất giờ đây nằm trong tệp settings.gradle
:
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = 'GradleManagedDeviceTestingNew'
include ':app'
Tệp build.gradle
cấp mô-đun chưa thay đổi. Vì vậy, hãy sử dụng tệp build.gradle
cấp cao nhất và tệp settings.gradle
để xác định cấu hình bản dựng áp dụng cho tất cả các mô-đun trong dự án hoặc kho lưu trữ và phần phụ thuộc áp dụng cho chính Gradle; sử dụng tệp build.gradle
cấp mô-đun để xác định cấu hình bản dựng dành riêng cho một mô-đun nhất định trong dự án.
Cải thiện trình thu gọn tài nguyên
Android Studio Bumblebee có sẵn một trình thu gọn tài nguyên được nâng cấp giúp giảm kích thước ứng dụng.
Hỗ trợ ứng dụng có tính năng động
Chế độ triển khai mặc định cho trình thu gọn tài nguyên Android đã được cập nhật trong trình bổ trợ Android cho Gradle 7.1.0-alpha09. Cách triển khai mới hỗ trợ việc thu nhỏ ứng dụng có các tính năng động.
Thử nghiệm việc tăng mức độ giảm kích thước ứng dụng
Bằng cách chỉnh sửa bảng tài nguyên để loại bỏ các giá trị không cần thiết và các tham chiếu đến các tệp không dùng tới, việc triển khai trình thu gọn tài nguyên mới có thể làm giảm kích thước của ứng dụng vốn đã được thu gọn hơn nữa. Trình khám phá tài nguyên mới có thể xoá hoàn toàn các tài nguyên tệp không dùng đến, giúp giảm kích thước ứng dụng hơn nữa. Theo mặc định, chế độ này chưa được bật, nhưng bạn có thể chọn dùng thử bằng cách thêm tuỳ chọn thử nghiệm android.experimental.enableNewResourceShrinker.preciseShrinking=true
vào tệp gradle.properties
của dự án.
Vui lòng báo cáo mọi vấn đề bạn phát hiện được với trình thu gọn tài nguyên hoặc cờ thử nghiệm mới. Để giúp chẩn đoán các vấn đề hoặc sử dụng dưới dạng giải pháp tạm thời, bạn có thể chuyển về phương thức triển khai trước đó bằng cách thêm android.enableNewResourceShrinker=false
vào gradle.properties
của dự án.
Trình thu gọn mới sẽ thay thế các tệp tài nguyên không dùng đến bằng các tệp tối thiểu, khác một chút so với trình thu gọn tài nguyên trước đó. Tuy vậy, thao tác này có thể sẽ không ảnh hưởng đến thời gian chạy.
Quy trình triển khai cũ được lên lịch loại bỏ trong trình bổ trợ Android cho Gradle 8.0.0.
Phát hành biến thể xây dựng
Trình bổ trợ Android cho Gradle 7.1.0 trở lên cho phép bạn chọn định cấu hình biến thể xây dựng nào để phát hành lên một kho lưu trữ Apache Maven. AGP sẽ tạo một thành phần bằng một hoặc nhiều biến thể xây dựng dựa trên DSL phát hành mới. Bạn có thể sử dụng thành phần này để tuỳ chỉnh ấn bản vào kho lưu trữ Maven. So với các phiên bản trước, tính năng này cũng tránh các thao tác không cần thiết vì theo mặc định, sẽ không có thành phần nào được tạo. Để tìm hiểu thêm, hãy xem nội dung phát hành mã mẫu.
Phát hành tệp JAR Javadoc
AGP 7.1.0 trở lên cho phép bạn tạo Javadoc từ nguồn Java và Kotlin, đồng thời phát hành các tệp JAR Javadoc ngoài tệp Android Archive (AAR) cho dự án thư viện. Javadoc được thêm vào tệp POM và tệp Siêu dữ liệu mô-đun Gradle{:.external}. Bật tính năng này bằng cách thêm withJavadocJar()
trong khối phát hành singleVariant
hoặc multipleVariants
.
Để tìm hiểu thêm, hãy xem tuỳ chọn phát hành mã mẫu.
Phát hành tệp JAR nguồn
AGP 7.1.0 trở lên cho phép bạn phát hành các tệp JAR từ Java và Kotlin ngoài các tệp AAR cho các dự án thư viện. Các nguồn này được bổ sung vào tệp POM và tệp Siêu dữ liệu mô-đun Gradle. Bạn có thể bật tính năng này bằng cách thêm withSourcesJar()
trong khối phát hành singleVariant
hoặc multipleVariants
. Để tìm hiểu thêm, hãy xem tuỳ chọn phát hành mã mẫu.
Thay đổi ngữ nghĩa của khối tìm lỗi mã nguồn
Tất cả phương pháp tìm lỗi mã nguồn dùng để ghi đè mức độ nghiêm trọng có sẵn của một vấn đề – enable
, disable
/ignore
, informational
, warning
, error
, fatal
— nay đã tuân theo thứ tự cấu hình. Ví dụ: giờ đây thao tác thiết lập một vấn đề nghiêm trọng trong finalizeDsl()
sẽ ghi đè thao tác vô hiệu hoá vấn đề này trong DSL chính. Để biết thêm thông tin, hãy xem tài liệu tham khảo về quy tắc khối lint{}
cũng như quy trình tạo bản dựng và điểm mở rộng dành cho Android.
Khả năng tương thích của trình bổ trợ Navigation Safe Args
Các API AGP mà trình bổ trợ Navigation Safe Args cho Gradle phụ thuộc vào đã bị xoá. AGP 7.1 không hoạt động được trên Navigation Safe Args phiên bản 2.4.0-rc1 hoặc 2.4.0, nhưng sẽ hoạt động được trên phiên bản 2.5.0-alpha01 và 2.4.1. Trong thời gian chờ đợi, bạn có thể sử dụng AGP 7.1 với bản dựng của Navigation Safe Args, Navigation 2.5.0-SNAPSHOT để giải quyết vấn đề này Để sử dụng bản dựng tổng quan nhanh (snapshot), hãy làm theo hướng dẫn về tổng quan nhanh với mã bản dựng #8054565.
Ngoài ra, Navigation Safe Args phiên bản 2.4.1 và 2.5.0 sẽ không còn hoạt động được với AGP 4.2; để sử dụng các phiên bản Safe Args đó, bạn phải sử dụng AGP 7.0 trở lên.
Vô hiệu hoá chế độ tạo thành phần tự động
Kể từ AGP 8.0, theo mặc định tính năng tạo thành phần tự động sẽ được vô hiệu hoá.
Hiện tại, AGP 7.1 sẽ tự động tạo một thành phần cho mỗi biến thể bản dựng (thành phần này cùng tên với biến thể bản dựng), và một thành phần all
chứa mọi biến thể bản dựng. Tính năng tạo thành phần tự động này sẽ bị vô hiệu hoá. Để chuyển sang hành vi mới, bạn nên vô hiệu hoá tính năng tạo thành phần tự động bằng cách đặt android.disableAutomaticComponentCreation
thành true.
. Để biết thêm thông tin, hãy xem nội dung Sử dụng trình bổ trợ Maven Publish.
Khả năng tương thích với tính năng Giám sát hiệu suất Firebase
AGP 7.1 không tương thích với trình bổ trợ Giám sát hiệu suất Firebase cho Gradle phiên bản 1.4.0 trở xuống. Trợ lý nâng cấp AGP sẽ không tự động cập nhật trình bổ trợ lên phiên bản 1.4.1. Vì vậy, nếu đang sử dụng firebase-perf
và muốn nâng cấp AGP lên 7.1, bạn cần nâng cấp lên phiên bản cụ thể này theo cách thủ công.
Vấn đề đã biết
Phần này mô tả các vấn đề đã biết còn tồn tại trong trình bổ trợ Android cho Gradle 7.1.0.
Vấn đề khi kiểm thử đơn vị một dự án ứng dụng có sử dụng trình bổ trợ Hilt
Classpath kiểm thử đơn vị chứa các lớp ứng dụng không được đo lường, nghĩa là Hilt không đo lường lớp ứng dụng để xử lý quá trình chèn phần phụ thuộc khi chạy kiểm thử đơn vị.
Sự cố này sẽ được khắc phục trong bản phát hành 7.1.1, hãy xem nội dung vấn đề #213534628.