Trình bổ trợ Android cho Gradle 8.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 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 | Ghi chú | |
---|---|---|---|
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 | 33.0.1 | 33.0.1 | 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. |
Kotlin DSL là lựa chọn mặc định cho cấu hình bản dựng
Theo mặc định, các dự án mới hiện sử dụng Kotlin DSL (build.gradle.kts
) cho cấu hình bản dựng. Điều này mang đến trải nghiệm chỉnh sửa tốt hơn so với Groovy DSL (build.gradle
) với tính năng làm nổi bật cú pháp, hoàn tất mã và chuyển đến phần khai báo. Xin lưu ý rằng nếu đang sử dụng AGP 8.1 và Kotlin DSL cho cấu hình bản dựng, bạn nên sử dụng Gradle 8.1 để có trải nghiệm tốt nhất. Để tìm hiểu thêm, hãy xem Hướng dẫn di chuyển DSL Kotlin.
Tự động hỗ trợ ngôn ngữ cho mỗi ứng dụng
Kể từ Android Studio Giraffe Canary 7 và AGP 8.1.0-alpha07, bạn có thể định cấu hình ứng dụng của mình để tự động hỗ trợ các lựa chọn ưu tiên về ngôn ngữ cho mỗi ứng dụng. Dựa trên tài nguyên dự án của bạn, Trình bổ trợ Android cho Gradle sẽ tạo tệp LocaleConfig
và thêm nội dung tham chiếu đến tệp đó trong tệp kê khai cuối cùng, nên bạn không còn phải làm việc này theo cách thủ công. AGP sẽ sử dụng các tài nguyên trong thư mục res
của mô-đun ứng dụng và mọi phần phụ thuộc của mô-đun thư viện để xác định ngôn ngữ cần đưa vào tệp LocaleConfig
.
Xin lưu ý rằng tính năng ngôn ngữ tự động cho mỗi ứng dụng hỗ trợ các ứng dụng chạy Android 13 (API cấp 33) trở lên. Để dùng tính năng này, bạn phải đặt compileSdkVersion
thành 33 trở lên. Để định cấu hình các lựa chọn ưu tiên về ngôn ngữ cho mỗi ứng dụng đối với các phiên bản Android trước, bạn vẫn cần phải sử dụng các API và bộ chọn ngôn ngữ trong ứng dụng.
Để bật tính năng tự động hỗ trợ ngôn ngữ cho mỗi ứng dụng, hãy chỉ định một ngôn ngữ mặc định:
- Trong thư mục
res
của mô-đun ứng dụng, hãy tạo một tệp mới có tên làresources.properties
. Trong tệp
resources.properties
, hãy đặt ngôn ngữ mặc định bằng nhãnunqualifiedResLocale
. Để tạo tên ngôn ngữ, hãy kết hợp mã ngôn ngữ với tập lệnh tuỳ chọn và mã vùng, phân tách mỗi mã bằng một dấu gạch ngang:- Ngôn ngữ: Dùng mã gồm 2 hoặc 3 chữ cái theo tiêu chuẩn ISO 639-1.
- Tập lệnh (không bắt buộc): Dùng mã ISO 15924.
- Khu vực (không bắt buộc): Dùng mã gồm 2 chữ cái theo tiêu chuẩn ISO 3166-1-alpha-2 hoặc mã gồm 3 chữ số theo tiêu chuẩn UN_M.49.
Chẳng hạn, nếu ngôn ngữ mặc định của bạn là tiếng Anh Mỹ:
unqualifiedResLocale=en-US
AGP sẽ thêm ngôn ngữ mặc định này và mọi ngôn ngữ thay thế mà bạn đã chỉ định (bằng cách dùng các đường dẫn values-*
trong thư mục res
) vào tệp LocaleConfig
được tạo tự động.
Theo mặc định, tính năng tự động hỗ trợ ngôn ngữ cho mỗi ứng dụng ở trạng thái tắt. Để bật tính năng này, hãy sử dụng chế độ cài đặt generateLocaleConfig
trong khối androidResources {}
của tệp build.gradle.kts
cấp mô-đun (tệp build.gradle
nếu bạn đang sử dụng Groovy):
Kotlin
android { androidResources { generateLocaleConfig = true } }
Groovy
android { androidResources { generateLocaleConfig true } }
Công cụ tìm lỗi mã nguồn của Android chứa mã byte nhắm mục tiêu JVM 17
Kể từ AGP 8.1.0-alpha04, Android Lint chứa mã byte nhắm mục tiêu JVM 17. Nếu viết các lượt kiểm tra tìm lỗi mã nguồn tuỳ chỉnh, bạn cần biên dịch với JDK 17 trở lên và chỉ định jvmTarget = '17'
trong các tuỳ chọn của trình biên dịch Kotlin.
Để tìm hiểu thêm về công cụ tìm lỗi mã nguồn, hãy xem bài viết Cải thiện mã bằng các lượt kiểm tra tìm lỗi mã nguồn.
Đã chuyển chế độ cài đặt nén thư viện gốc sang DSL
Kể từ AGP 8.1.0-alpha10, bạn sẽ nhận được cảnh báo nếu không định cấu hình tính năng nén thư viện gốc bằng DSL thay vì tệp kê khai. Hướng dẫn sau đây giải thích cách cập nhật cấu hình để sử dụng DSL. Để được trợ giúp về việc thực hiện các bản cập nhật 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).
Để sử dụng thư viện gốc chưa nén, hãy xoá thuộc tính android::extractNativeLibs
khỏi tệp kê khai và thêm mã sau vào tệp build.gradle.kts
cấp mô-đun (tệp build.gradle
nếu bạn đang sử dụng Groovy):
Kotlin
android { packagingOptions { jniLibs { useLegacyPackaging = false } } }
Groovy
android { packagingOptions { jniLibs { useLegacyPackaging false } } }
Cờ bản dựng thử nghiệm
Đây là những cờ thử nghiệm dùng để định cấu hình bản dựng có trong AGP 8.1.
Gắn cờ | Đã thêm trong | Giá trị mặc định | Ghi chú |
---|---|---|---|
android.experimental.useDefaultDebugSigningConfigForProfileableBuildtypes |
AGP 8.0 | false |
Việc bật tính năng này mà không chỉ định cấu hình ký tên sẽ khiến AGP sử dụng cấu hình ký gỡ lỗi mặc định khi chạy một bản dựng có thể định cấu hình hoặc có thể gỡ lỗi. Cờ này bị tắt theo mặc định để khuyến khích tác giả bản dựng khai báo các cấu hình ký hồ sơ cụ thể. |
android.experimental.library.desugarAndroidTest |
AGP 8.0 | false |
Cờ này cho phép các trình tạo thư viện kích hoạt quá trình đơn giản hoá thư viện cốt lõi cho các tệp APK kiểm thử mà không ảnh hưởng đến AAR đã tạo, chẳng hạn như thông qua việc tìm lỗi mã nguồn. Chúng tôi dự định sau cùng sẽ hỗ trợ hành vi này trong API biến thể. |
android.experimental.testOptions.managedDevices.customDevice |
AGP 8.0 | false |
Nếu được bật, Thiết bị do Gradle quản lý sẽ cho phép loại thiết bị tuỳ chỉnh do người dùng xác định mà có thể được một trình bổ trợ cung cấp. Bạn phải bật cờ này nếu muốn sử dụng trình bổ trợ Phòng thử nghiệm Firebase. |
android.lint.printStackTrace |
AGP 8.0 | false |
Nếu được bật, công cụ tìm lỗi mã nguồn của Android sẽ in một dấu vết ngăn xếp nếu gặp sự cố. Cờ này có các chức năng tương tự như biến môi trường LINT_PRINT_STACKTRACE . |
android.experimental.testOptions.managedDevices.maxConcurrentDevices |
AGP 8.0 | Không có | Chỉ định số lượng tối đa Thiết bị do Gradle quản lý (AVD) đồng thời hoạt động tại một thời điểm bất kỳ. Nếu giá trị là 0 hoặc âm, thì không có số lượng thiết bị tối đa. |
android.experimental.testOptions.installApkTimeout |
AGP 8.0 | Không có | Khoảng thời gian chờ tính bằng giây để cài đặt một APK. Nếu giá trị là 0 hoặc là số âm, thì UTP sẽ đặt thành giá trị mặc định. |