Trình bổ trợ Android cho Gradle 4.2.0 (tháng 3 năm 2021)
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 | 6.7.1 | Không áp dụng | Để tìm hiểu thêm, hãy xem phần cập nhật Gradle. |
Công cụ tạo SDK | 30.0.2 | 30.0.2 | 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. |
Tính năng mới
Phiên bản trình bổ trợ Android cho Gradle này có các tính năng mới sau đây.
Ngôn ngữ Java phiên bản 8 theo mặc định
Kể từ phiên bản 4.2, theo mặc định, AGP sẽ sử dụng ngôn ngữ Java cấp 8. Java 8 cung cấp quyền truy cập vào một số tính năng ngôn ngữ mới hơn, bao gồm cả hàm lambda biểu thức, tham chiếu phương thức và phương thức giao diện tĩnh. Để xem danh sách đầy đủ để hỗ trợ các tính năng được hỗ trợ, hãy xem tài liệu về Java 8.
Để giữ nguyên hoạt động cũ, hãy chỉ định Java 7 một cách rõ ràng trong tệp build.gradle.kts
hoặc build.gradle
ở cấp mô-đun:
// build.gradle
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
// For Kotlin projects, compile to Java 6 instead of 7
kotlinOptions {
jvmTarget = "1.6"
}
}
// build.gradle.kts
android {
...
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
// For Kotlin projects, compile to Java 6 instead of 7
kotlinOptions {
jvmTarget = "1.6"
}
}
Trình biên dịch tài nguyên JVM mới
Trình biên dịch tài nguyên JVM mới trong công cụ trình bổ trợ Android cho Gradle 4.2 thay thế các phần của trình biên dịch tài nguyên AAPT2, có thể cải thiện hiệu suất của bản dựng, đặc biệt là trên máy Windows. Theo mặc định, trình biên dịch tài nguyên JVM mới được bật.
Hỗ trợ ký bằng v3 và v4
Trình bổ trợ Android cho Gradle 4.2 hiện hỗ trợ APK v3
và APK v4.
Để bật một hoặc cả hai định dạng này trong
bản dựng, hãy thêm các thuộc tính sau vào build.gradle
cấp mô-đun của bạn
hoặc tệp build.gradle.kts
:
// build.gradle
android {
...
signingConfigs {
config {
...
enableV3Signing true
enableV4Signing true
}
}
}
// build.gradle.kts
android {
...
signingConfigs {
config {
...
enableV3Signing = true
enableV4Signing = true
}
}
}
Tính năng ký APK v4 cho phép bạn nhanh chóng triển khai các APK lớn bằng ADB Cài đặt APK gia tăng trong Android 11. Cờ mới này sẽ xử lý bước ký tệp APK trong quá trình triển khai.
Định cấu hình việc ký ứng dụng theo biến thể
Giờ đây, bạn có thể bật hoặc tắt tính năng ký ứng dụng trong Android Gradle trình bổ trợ cho mỗi biến thể.
Ví dụ này minh hoạ cách thiết lập tính năng ký ứng dụng cho mỗi biến thể bằng cách sử dụng phương thức onVariants()
trong Kotlin hoặc Groovy:
androidComponents {
onVariants(selector().withName("fooDebug"), {
signingConfig.enableV1Signing.set(false)
signingConfig.enableV2Signing.set(true)
})
Thuộc tính Gradle mới:
android.native.buildOutput
Để giảm sự lộn xộn trong đầu ra bản dựng, AGP 4.2 sẽ lọc các thông báo từ các bản dựng gốc có sử dụng CMake và theo mặc định ndk-build
, chỉ cho thấy đầu ra của trình biên dịch C/C++. Trước đây, một dòng đầu ra được tạo cho mọi tệp được xây dựng, dẫn đến tạo ra số lượng lớn thông báo thông tin.
Nếu bạn muốn xem toàn bộ kết quả gốc, hãy đặt
Thuộc tính Gradle từ android.native.buildOutput
đến verbose
.
Bạn có thể thiết lập thuộc tính này trong tệp gradle.properties
hoặc thông qua dòng lệnh.
gradle.properties
android.native.buildOutput=verbose
Dòng lệnh
-Pandroid.native.buildOutput=verbose
Giá trị mặc định của thuộc tính này là quiet
.
Thay đổi hành vi các tệp gradle.properties
Kể từ phiên bản AGP 4.2, bạn không thể ghi đè các thuộc tính Gradle qua các dự án phụ nữa. Nói cách khác, nếu bạn khai báo một thuộc tính trong một
Tệp gradle.properties
trong một dự án phụ thay vì thư mục gốc
dự án, thì tệp đó sẽ bị bỏ qua.
Ví dụ: trong các bản phát hành trước, AGP sẽ đọc giá trị từ <var>projectDir</var>/gradle.properties
, <var>projectDir</var>/app/gradle.properties
, <var>projectDir</var>/library/gradle.properties
, v.v. Đối với các mô-đun ứng dụng, nếu <var>projectDir</var>/gradle.properties
và <var>projectDir</var>/app/gradle.properties
có cùng thuộc tính Gradle, giá trị của <var>projectDir</var>/app/gradle.properties
sẽ được ưu tiên.
Trong AGP 4.2, hành vi này đã được thay đổi và AGP sẽ không tải giá trị qua gradle.properties
trong các dự án con (ví dụ:
<var>projectDir</var>/app/gradle.properties
).
Thay đổi này phản ánh
hành vi mới của Gradle và hỗ trợ
lưu cấu hình vào bộ nhớ đệm
Để biết thêm thông tin về cách đặt giá trị trong tệp gradle.properties
, hãy xem tài liệu về Gradle.
Thay đổi về cấu hình và khả năng tương thích với Gradle
Khi chạy trong Android Studio, công cụ bản dựng Gradle sẽ sử dụng JDK đi kèm của Studio. Trong các bản phát hành trước, JDK 8 được đóng gói với Studio. Tuy nhiên, trong 4.2 thì lại là JDK 11. Khi sử dụng JDK 11 được đóng gói để chạy Gradle, điều này có thể dẫn đến một số điểm không tương thích hoặc ảnh hưởng đến hiệu suất của JVM do những thay đổi đối với bộ thu gom rác. Những vấn đề này được mô tả dưới đây.
Lưu ý: Mặc dù bạn nên chạy Gradle với JDK 11, nhưng thay đổi JDK dùng để chạy Gradle trong Cấu trúc dự án . Việc thay đổi chế độ cài đặt này sẽ chỉ thay đổi JDK dùng để chạy Gradle và sẽ không thay đổi JDK dùng để tự chạy Studio.
Khả năng tương thích của Studio với trình bổ trợ Android cho Gradle (AGP)
Android Studio 4.2 có thể mở các dự án sử dụng AGP 3.1 trở lên miễn là AGP đang chạy Gradle 4.8.1 trở lên. Để biết thêm thông tin về khả năng tương thích với Gradle, hãy xem Cập nhật Gradle.
Tối ưu hoá bản dựng Gradle cho JDK 11
Bản cập nhật này của JDK 11 ảnh hưởng đến cấu hình mặc định của rác JVM trình thu thập, vì JDK 8 sử dụng trình thu gom rác song song trong khi JDK 11 sử dụng Trình thu gom rác G1.
Để có thể cải thiện hiệu suất của bản dựng, bạn nên
kiểm thử bản dựng Gradle bằng
trình thu gom rác song song. Trong gradle.properties
, hãy thiết lập những mục sau:
org.gradle.jvmargs=-XX:+UseParallelGC
Nếu các tuỳ chọn khác đã được thiết lập trong trường này, hãy thêm tuỳ chọn mới:
org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC
Để đo tốc độ bản dựng với nhiều cấu hình, hãy xem Lập hồ sơ cho bản dựng.
Tệp DEX không nén trong tệp APK khi minSdk
= 28 trở lên
Theo mặc định, AGP sẽ đóng gói các tệp DEX không nén trong APK khi minSdk
= 28 trở lên. Điều này làm tăng dung lượng APK, nhưng dẫn đến dung lượng cài đặt nhỏ hơn trên thiết bị và dung lượng tải xuống gần tương tự như trước.
Để buộc AGP phải đóng gói các tệp DEX theo cách nén, bạn có thể thêm các tệp sau vào tệp build.gradle
:
android {
packagingOptions {
dex {
useLegacyPackaging true
}
}
}
Sử dụng DSL để đóng gói thư viện gốc đã nén
Bạn nên đóng gói thư viện gốc ở dạng không nén, vì điều này
dẫn đến kích thước cài đặt ứng dụng nhỏ hơn, kích thước tải xuống ứng dụng nhỏ hơn và ứng dụng tải nhanh hơn
thời gian tải cho người dùng. Tuy nhiên, nếu bạn muốn trình bổ trợ Android cho Gradle
đóng gói thư viện gốc được nén khi tạo ứng dụng, đặt
useLegacyPackaging
vào true
trong tệp build.gradle
của ứng dụng:
android {
packagingOptions {
jniLibs {
useLegacyPackaging true
}
}
}
Cờ useLegacyPackaging
thay thế thuộc tính tệp kê khai extractNativeLibs
. Để biết thêm thông tin cơ bản, hãy xem ghi chú phát hành
Thư viện gốc đóng gói không nén theo mặc định.