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 tính năng và điểm cải thiệ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 á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. |
Phát hành bản vá
Dưới đâ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)
Để xem danh sách các lỗi đã được khắc phục trong AGP 8.0.2, hãy xem các vấn đề đã xử lý của 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: bắt buộc phải có không gian tên 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 phần
Đặt không gian tên.
Khi di chuyển sang DSL không gian tên, hãy lưu ý những vấn đề sau:
- Các phiên bản AGP trước đây suy luận không gian tên kiểm thử từ không gian tên chính hoặc mã nhận dạng ứ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 quá trình nâng cấp nếu phát hiện thấy không gian tên chính và không gian tên kiểm thử của dự án giống nhau. Nếu quá trình nâng cấp bị chặn, bạn cần thay đổi
testNamespace
theo cách thủ công và sửa đổi mã nguồn cho phù hợp. - Sau khi bạn thay đổi không gian tên kiểm thử, có thể mã của bạn sẽ biên dịch nhưng các kiểm thử được đo lường 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 của bạn 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 nhận xét #19.
Thay đổi có thể gây lỗi: giá trị mặc định của lựa chọn bản dựng
Kể từ AGP 8.0, các giá trị mặc định cho những cờ này đã thay đổi để cải thiện hiệu suất bản dựng. Để được trợ giúp điều chỉnh mã nhằm hỗ trợ một số thay đổi này, hãy sử dụng Trợ lý nâng cấp AGP (Tools > AGP Upgrade Assistant) (Công cụ > Trợ lý nâng cấp AGP). Trợ lý nâng cấp sẽ hướng dẫn bạn cập nhật mã để phù hợp với hành vi mới hoặc thiết lập 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 lựa 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 |
AGP 8.0 không bật tính năng hỗ trợ AIDL theo mặc định. Bạn cần chỉ định lựa 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 dự kiến sẽ bị 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 lựa 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 dự kiến sẽ bị xoá trong AGP 9.0. |
android.nonFinalResIds |
true |
false |
Theo mặc định, 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. |
android.nonTransitiveRClass |
true |
false |
AGP 8.0 chỉ 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 |
AGP 8.0 bật chế độ đầy đủ R8 theo mặc định. Để biết thêm thông tin chi tiết, hãy xem phần Chế độ đầy đủ R8. |
Thay đổi có thể gây lỗi: các giá trị của lựa chọn bản dựng bắt buộc
Kể từ AGP 8.0, bạn sẽ không thể thay đổi giá trị của các cờ này nữa. Nếu bạn chỉ định các giá trị này trong tệp gradle.properties
, thì giá trị sẽ bị bỏ qua và AGP sẽ in cảnh báo.
Gắn cờ | Giá trị bắt buộc | Ghi chú |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 sẽ phát 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 giai đoạn cấu hình vì điều này ảnh hưởng tiêu cực đến thời gian cấu hình Gradle. |
android.r8.failOnMissingClasses |
true |
AGP 8.0 không tạo được các bản dựng sử dụng R8 nếu có các lớp bị thiếu để đả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 các thư viện bị thiếu hoặc -dontwarn giữ lại các quy tắc. Để biết thêm thông tin chi tiết, hãy xem phần Thiếu cảnh báo lớp trong trình thu gọn R8. |
android.testConfig.useRelativePath |
true |
Khi bạn bật chế độ hỗ trợ sử dụng tài nguyên, tài sản và tệp kê khai của Android trong các bài kiểm thử đơn vị, AGP 8.0 sẽ tạo một tệp test_config.properties chỉ chứa các đường dẫn tương đối. Điều này đảm bảo rằng các kiểm thử đơn vị Android luôn có thể sử dụng bộ nhớ đệm bản dựng Gradle. |
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 bản dựng. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
Khi bạn bật tính năng thêm thông tin về phần phụ thuộc SDK trong AAB và APK, AGP 8.0 cũng sẽ thêm danh sách các kho lưu trữ dự án vào thông tin này. Để tìm hiểu thêm, hãy xem Thông tin phần phụ thuộc dành cho Play Console. |
android.enableArtProfiles |
true |
Giờ đây, các hồ sơ cơ sở luôn được tạo. Hãy xem phần Hồ sơ cơ sở để biết thông tin chi tiết. |
android.enableNewResourceShrinker |
true |
Sử dụng quy trình triển khai trình rút gọn tài nguyên mới theo mặc định. Trình thu gọn tài nguyên mới có hỗ trợ các tính năng động. |
android.enableSourceSetPathsMap |
true |
Được dùng để tính toán các mối liên kết đường dẫn tài nguyên tương đối, nhờ đó, các bản dựng Gradle thường xuyên được cập nhật hơn. |
android.cacheCompileLibResources |
true |
Giờ đây, theo mặc định, bạn có thể lưu vào bộ nhớ đệm các tài nguyên thư viện đã biên dịch vì Gradle theo dõi các tệp tài nguyên tương ứng với vị trí dự án. Cần bật android.enableSourceSetPathsMap . |
android.disableAutomaticComponentCreation |
true |
Theo mặc định, AGP 8.0 không tạo SoftwareComponent. Thay vào đó, AGP chỉ tạo SoftwareComponents cho những biến thể được định cấu hình để xuất bản bằng DSL phát hành. |
Cờ ổn định mới cho hồ sơ thực thi
AGP có 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 xem trước.
Không hỗ trợ việc chỉ định thuộc tính từng phần của Kotlin
Nếu bạn đang sử dụng Kotlin DSL của Gradle cho tập lệnh bản dựng, hãy lưu ý rằng Android Studio và AGP 8.0 không hỗ trợ việc chỉ định thuộc tính thử nghiệm bằ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 tác 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ó một chế độ xem mặc định mới cho các tác vụ ả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 tác vụ riêng lẻ, Trình phân tích bản dựng sẽ nhóm các tác 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 được danh mục nào có tác động lớn nhất đến thời gian xây dựng. Khi bạn mở rộng từng danh mục, danh sách các việc cần làm tương ứng sẽ xuất hiện. Để hiển thị từng việc cần làm mà không 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ợ chế độ cài đặt mới. Trình bổ trợ chế độ cài đặt cho phép bạn tập trung các cấu hình chung (cấu hình áp dụng cho tất cả các mô-đun) ở một nơi để bạn không cần sao chép và dán các cấu hình trong nhiều mô-đun. Ngoài ra, bạn có thể dùng trình bổ trợ cài đặt để tạo hồ sơ thực thi công cụ hoặc các hướng dẫn khác nhau về cách chạy một công cụ và chuyển đổi giữa các hồ sơ đó.
Để sử dụng trình bổ trợ cài đặt, hãy áp dụng trình bổ trợ này trong tệp settings.gradle
:
apply plugin 'com.android.settings'
Tập trung các cấu hình chung
Để định cấu hình cấu hình chung, hãy dùng khối android
mới trong tệp 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ụ. Hồ sơ thực thi xác định cách chạy một công cụ; bạn có thể chọn các hồ sơ thực thi khác nhau 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 để chạy trong một quy trình riêng biệt. Hiện tại, chỉ có công cụ R8 được hỗ trợ.
Tạo hồ sơ thực thi và đặt hồ sơ thực thi mặc định trong tệp settings.gradle
, như minh hoạ 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 thuộc tính android.experimental.settings.executionProfile
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, cho phép bạn thiết lập các quy trình khác nhau. Ví dụ: nếu có quy trình tích hợp liên tục, bạn có thể dùng dòng lệnh để thay đổi hồ sơ thực thi mà không cần 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 để tạo ứng dụng, giờ đây bạn bắt buộc phải có JDK 17 để chạy được Gradle. Android Studio Flamingo có sẵn 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 phải thay đổi cấu hình cho dự án.
Nếu cần thiết lập phiên bản JDK mà AGP sử dụng trong Android Studio theo cách thủ công, 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 biến môi trường JAVA_HOME
hoặc tuỳ chọn dòng lệnh -Dorg.gradle.java.home
vào thư mục cài đặt JDK 17.
Vấn đề đã khắc phục
Trình bổ trợ Android cho Gradle 8.0.0
Vấn đề đã khắc phục | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Trình bổ trợ Android cho Gradle |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tìm lỗi mã nguồn |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Tích hợp công cụ tìm lỗi mã nguồn |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Trình rút gọn (R8) |
|
Trình bổ trợ Android cho Gradle 8.0.1
Vấn đề đã khắc phục | ||||
---|---|---|---|---|
Trình rút gọn (R8) |
|
Trình bổ trợ Android cho Gradle 8.0.2
Vấn đề đã khắc phục | |||||
---|---|---|---|---|---|
Trình rút gọn (R8) |
|