Trình bổ trợ Android cho Gradle 8.1.0 (tháng 7 năm 2023)

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:

  1. 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.
  2. Trong tệp resources.properties, hãy đặt ngôn ngữ mặc định bằng nhãn unqualifiedResLocale. Để 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.