Trình bổ trợ Android cho Gradle 8.0.0 là một bản phát hành chính bao gồm nhiều các tính năng và cải tiến mới.
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.0 | 8.0 | Để 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 có thời gian | 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. |
Phát hành bản vá
Sau đây là danh sách các bản phát hành của bản vá cho Trình bổ trợ Android cho Gradle 8.0.
Trình bổ trợ Android cho Gradle 8.0.2 (tháng 5 năm 2023)
Để biết danh sách các lỗi đã khắc phục trong AGP 8.0.2, hãy xem Các vấn đề đã xử lý đối với Android Studio 2022.2.1.
Trình bổ trợ Android cho Gradle 8.0.1 (tháng 5 năm 2023)
Bản cập nhật nhỏ này bao gồm các bản sửa lỗi sau:
Vấn đề đã khắc phục | |
---|---|
Lỗi: "No VersionRequirement with the given id in the table" sau khi nâng cấp AGP 7.2.2 -> 7.4.0
|
|
Lỗi NullPointerException của R8 tại markTypeAsLive AGP 7.4.1
|
|
[R8 4.0.53] Lỗi xác minh lớp cứng trên Android 11
|
Thay đổi có thể gây lỗi: không gian tên bắt buộc trong tập lệnh bản dựng cấp mô-đun
Bạn phải đặt không gian tên trong tệp build.gradle.kts
cấp mô-đun, thay vì
tệp kê khai. Bạn có thể bắt đầu sử dụng thuộc tính DSL namespace
kể từ AGP 7.3. Để tìm hiểu thêm, hãy xem
Đặt không gian tên.
Khi di chuyển sang DSL không gian tên, hãy lưu ý các vấn đề sau:
- Các phiên bản AGP trước đó suy luận không gian tên kiểm thử từ không gian tên chính, hoặc
mã ứng dụng không chính xác trong một số trường hợp. Trợ lý nâng cấp AGP sẽ chặn
nâng cấp nếu thấy rằng không gian tên chính và không gian tên thử nghiệm của dự án
như nhau. Nếu quá trình nâng cấp bị chặn, bạn cần phải thay đổi
testNamespace
theo cách thủ công và sửa đổi mã nguồn cho phù hợp. - Sau khi thay đổi không gian tên kiểm thử, có thể mã của bạn sẽ biên dịch
nhưng kiểm thử đo lường của bạn sẽ không thành công trong thời gian chạy. Điều này có thể xảy ra nếu
mã nguồn kiểm thử đo lường tham chiếu đến một tài nguyên được xác định trong cả
androidTest
và nguồn ứng dụng.
Để biết thêm thông tin, hãy xem vấn đề #191813691, bình luận #19.
Thay đổi có thể gây lỗi: giá trị mặc định của tuỳ chọn tạo bản dựng
Kể từ AGP 8.0, giá trị mặc định cho các cờ này đã thay đổi thành cải thiện hiệu suất của bản dựng. Để được trợ giúp điều chỉnh mã của bạn nhằm hỗ trợ một số những thay đổi này, hãy dùng Trợ lý nâng cấp AGP (Tools (Công cụ) > AGP Upgrade Assistant (Trợ lý nâng cấp AGP)). Trợ lý nâng cấp sẽ hướng dẫn bạn thực hiện cập nhật mã cho phù hợp với hành vi mới hoặc đặt cờ để duy trì hành vi trước đó.
Gắn cờ | Giá trị mặc định mới | Giá trị mặc định trước đó | Ghi chú |
---|---|---|---|
android.defaults.buildfeatures.buildconfig |
false |
true |
Theo mặc định, AGP 8.0 không tạo BuildConfig . Bạn cần
để chỉ định tuỳ chọn này bằng cách sử dụng DSL trong các dự án mà bạn cần. |
android.defaults.buildfeatures.aidl |
false |
true |
Theo mặc định, AGP 8.0 không hỗ trợ AIDL. Bạn cần chỉ định tuỳ chọn này bằng cách sử dụng DSL trong các dự án mà bạn cần. Cờ này là đã lên kế hoạch loại bỏ trong AGP 9.0. |
android.defaults.buildfeatures.renderscript |
false |
true |
Theo mặc định, AGP 8.0 không bật tính năng hỗ trợ RenderScript. Bạn cần chỉ định tuỳ chọn này bằng cách sử dụng DSL trong các dự án mà bạn cần. Chiến dịch này cờ theo kế hoạch sẽ bị xoá trong AGP 9.0. |
android.nonFinalResIds |
true |
false |
AGP 8.0 tạo các lớp R có các trường không phải là trường cuối cùng bằng cách
mặc định. |
android.nonTransitiveRClass |
true |
false |
AGP 8.0 tạo các lớp R cho các tài nguyên được xác định trong
mô-đun hiện tại. |
android.enableR8.fullMode |
true |
false |
Theo mặc định, AGP 8.0 sẽ bật chế độ đầy đủ cho R8. Để biết thêm thông tin, hãy xem Chế độ đầy đủ R8. |
Thay đổi có thể gây lỗi: giá trị tuỳ chọn bản dựng được thực thi
Kể từ AGP 8.0, bạn sẽ không thể thay đổi giá trị cho các cờ này nữa. Nếu
bạn chỉ định chúng trong tệp gradle.properties
, giá trị sẽ bị bỏ qua và AGP
in cảnh báo.
Gắn cờ | Giá trị được thực thi | Ghi chú |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 đưa ra cảnh báo nếu phát hiện thấy quá trình phân giải cấu hình trong quá trình giai đoạn cấu hình vì giai đoạn này tác động tiêu cực đến cấu hình Gradle lần. |
android.r8.failOnMissingClasses |
true |
AGP 8.0 sẽ gặp lỗi các bản dựng sử dụng R8 nếu thiếu các lớp để
đảm bảo tối ưu hoá DEX tốt hơn. Để giải quyết vấn đề này, bạn cần thêm
thiếu thư viện hoặc -dontwarn lưu giữ quy tắc. Để biết thêm thông tin,
xem
Thiếu cảnh báo lớp trong trình thu gọn R8. |
android.testConfig.useRelativePath |
true |
Khi được hỗ trợ sử dụng tài nguyên, thành phần và tệp kê khai của Android trong
kiểm thử đơn vị được bật, AGP 8.0 sẽ tạo ra một
Tệp test_config.properties chỉ chứa tương đối
đường dẫn. Điều này đảm bảo rằng các bài kiểm thử đơn vị Android luôn có thể sử dụng Gradle
bộ nhớ đệm bản dựng. |
android.useNewJarCreator |
true |
AGP sử dụng thư viện Zipflinger khi tạo tệp JAR để cải thiện hiệu suất của bản dựng. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
Khi bạn bật tính năng thêm thông tin phần phụ thuộc SDK trong tệp AAB và APK, AGP 8.0 cũng thêm danh sách kho lưu trữ dự án vào thông tin này. Người nhận tìm hiểu thêm, xem Thông tin về phần phụ thuộc dành cho Play Console. |
android.enableArtProfiles |
true |
Giờ đây, các hồ sơ cơ sở sẽ luôn được tạo. Hãy xem bài viết Hồ sơ cơ sở để biết thông tin chi tiết. |
android.enableNewResourceShrinker |
true |
Sử dụng phương thức triển khai trình khám phá tài nguyên mới theo mặc định. Gói thuê bao mới trình thu gọn tài nguyên bao gồm hỗ trợ cho các tính năng động. |
android.enableSourceSetPathsMap |
true |
Dùng để tính toán ánh xạ đường dẫn tài nguyên tương đối, để Gradle bản dựng được cập nhật thường xuyên hơn. |
android.cacheCompileLibResources |
true |
Theo mặc định, tài nguyên thư viện đã biên dịch hiện có thể được lưu vào bộ nhớ đệm vì Gradle
theo dõi các tệp tài nguyên tương ứng với vị trí dự án. Cần
android.enableSourceSetPathsMap sẽ được bật. |
android.disableAutomaticComponentCreation |
true |
Theo mặc định, AGP 8.0 không tạo ra SoftwareComponent nào. Thay vào đó, AGP sẽ tạo Phần mềm chỉ dành cho các biến thể đã được định cấu hình để xuất bản bằng cách sử dụng DSL xuất bản. |
Cờ ổn định mới cho hồ sơ thực thi
AGP bao gồm cờ mới android.settings.executionProfile
. Sử dụng cờ này để
ghi đè hồ sơ thực thi mặc định từ
SettingsExtension
.
Để tìm hiểu thêm, hãy xem tài liệu về trình bổ trợ cài đặt.
Để xem trước các cờ thử nghiệm, hãy xem ghi chú phát hành bản thử nghiệm.
Không hỗ trợ chỉ định thuộc tính tải từng phần (lazy) của Kotlin
Nếu bạn đang dùng Kotlin DSL của Gradle cho các tập lệnh bản dựng, hãy lưu ý rằng Android
Studio và AGP 8.0 không hỗ trợ tính năng chỉ định thuộc tính thử nghiệm bằng cách sử dụng
Toán tử =
. Để biết thêm thông tin về tính năng này, hãy xem
ghi chú phát hành
và
tài liệu.
Danh mục nhiệm vụ của Trình phân tích bản dựng
Kể từ Android Studio Flamingo, Trình phân tích bản dựng có chế độ xem mặc định mới cho các nhiệm vụ có ảnh hưởng đến thời lượng bản dựng. Nếu dự án của bạn sử dụng AGP 8.0 trở lên, thay vì hiển thị từng nhiệm vụ riêng lẻ, Trình phân tích bản dựng sẽ nhóm các nhiệm vụ đó theo danh mục. Ví dụ: các tác vụ dành riêng cho Tài nguyên Android, Kotlin hoặc Dexing được nhóm lại với nhau rồi sắp xếp theo thời lượng bản dựng. Điều này giúp bạn dễ dàng biết danh mục nào có tác động lớn nhất đến thời gian xây dựng. Mở rộng từng danh mục sẽ hiện danh sách các tác vụ tương ứng. Để hiển thị từng công việc riêng lẻ, mà không cần nhóm, hãy sử dụng trình đơn thả xuống Nhóm theo.
Trình bổ trợ cài đặt mới
AGP 8.0.0-alpha09 giới thiệu trình bổ trợ cài đặt mới. Trình bổ trợ cài đặt cho phép bạn tập trung các cấu hình chung — những cấu hình áp dụng cho tất cả các mô-đun — trong một nơi nên bạn không cần sao chép và dán cấu hình trong nhiều các mô-đun. Ngoài ra, bạn có thể sử dụng trình bổ trợ cài đặt để tạo công cụ hồ sơ thực thi hoặc các hướng dẫn khác về cách chạy công cụ và chuyển đổi giữa các tài sản.
Để sử dụng trình bổ trợ cài đặt, hãy áp dụng trình bổ trợ trong tệp settings.gradle
:
apply plugin 'com.android.settings'
Tập trung các cấu hình chung ở một nơi
Để định cấu hình chung, hãy sử dụng khối android
mới trong
settings.gradle
. Ví dụ:
android {
compileSdk 31
minSdk 28
...
}
Hồ sơ thực thi công cụ
Trình bổ trợ cài đặt cũng cho phép bạn tạo hồ sơ thực thi cho một số công cụ. Một hồ sơ thực thi xác định cách chạy công cụ; bạn có thể chọn các báo cáo khác nhau hồ sơ thực thi tuỳ thuộc vào môi trường. Trong hồ sơ thực thi, bạn có thể đặt các đối số JVM cho một công cụ và định cấu hình công cụ đó để chạy trong một quy trình riêng biệt. Hiện tại, chỉ có Hỗ trợ công cụ R8.
Tạo hồ sơ thực thi và đặt hồ sơ thực thi mặc định trong
settings.gradle
, như trong ví dụ sau:
android {
execution {
profiles {
high {
r8 {
jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
low {
r8 {
jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
ci {
r8.runInSeparateProcess false
}
}
defaultProfile "low"
}
}
Để ghi đè hồ sơ mặc định, hãy chọn một hồ sơ khác bằng cách sử dụng
android.experimental.settings.executionProfile
thuộc tính trong
Tệp gradle.properties
:
android.experimental.settings.executionProfile=high
Bạn cũng có thể thiết lập thuộc tính này bằng dòng lệnh, điều này cho phép bạn thiết lập
các quy trình công việc khác nhau. Ví dụ: nếu bạn có quy trình tích hợp liên tục
bạn có thể sử dụng dòng lệnh để thay đổi hồ sơ thực thi mà không phải
thay đổi tệp settings.gradle
:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
Cần có JDK 17 để chạy AGP 8.0
Khi sử dụng Trình bổ trợ Android cho Gradle 8.0 để xây dựng ứng dụng, giờ đây, bạn bắt buộc phải sử dụng JDK 17 để chạy Gradle. Android Studio Flamingo gói JDK 17 và định cấu hình Gradle để sử dụng theo mặc định, nghĩa là hầu hết người dùng Android Studio không cần thực hiện bất kỳ thay đổi nào về cấu hình đối với dự án của họ.
Nếu bạn cần đặt phiên bản JDK theo cách thủ công mà AGP sử dụng bên trong Android Studio, bạn cần sử dụng JDK 17 trở lên.
Khi sử dụng AGP độc lập với Android Studio, hãy nâng cấp phiên bản JDK bằng cách
thiết lập JAVA_HOME
biến môi trường
hoặc -Dorg.gradle.java.home
tuỳ chọn dòng lệnh
vào thư mục cài đặt JDK 17.