Hướng dẫn này mô tả những thay đổi cần thiết để chuyển sang phiên bản 5.0.
Thông tin cập nhật về Gradle và Trình bổ trợ Android cho Gradle
Nâng cấp các phiên bản Trình bổ trợ Android và Gradle cho Gradle
Trước tiên, hãy nâng cấp các phiên bản Gradle và Trình bổ trợ Android cho Gradle. Bản nâng cấp này bao gồm khả năng tương thích tốt hơn với một số phần phụ thuộc SDK nhất định (bao gồm Kotlin 1.9), cũng như một số bản sửa lỗi quan trọng.
Bản phát hành chính của SDK này yêu cầu các phần phụ thuộc phiên bản sau đây cho Dự án ứng dụng Android:
- phiên bản Gradle tối thiểu là phiên bản 7.5.0 nhưng không cao hơn phiên bản 7.6.0.
- phiên bản Trình bổ trợ Android cho Gradle (AGP) thuộc phạm vi phiên bản 7.4.x.
Bạn có thể nhắm mục tiêu phiên bản trình bổ trợ cao hơn; tuy nhiên, bạn có thể chạy thành các cảnh báo về việc ngừng sử dụng hoặc một số tính năng mới có thể không hoạt động.
Để sửa đổi phiên bản Gradle, hãy sửa đổi dòng trong tệp
/gradle/wrapper/gradle-wrapper.properties
tệp
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
Để sửa đổi phiên bản Trình bổ trợ Android cho Gradle, hãy sửa đổi tệp build.gradle
chứa khối buildscript
. Ví dụ:
buildscript {
repositories {
google()
mavenCentral()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.4.1'
}
}
Di chuyển khả năng hỗ trợ thư viện Java 7 sang Java 8
Bước 1 – Bật tính năng hỗ trợ thư viện Java 8
Vì cấp độ API tối thiểu của SDK là 23 và phiên bản AGP được yêu cầu là 7.4 trở lên, nên cấu hình hơi khác so với tài liệu nguồn được đề cập.
buildscript {
repositories {
google()
mavenCentral()
jcenter()
maven {
url = uri("https://storage.googleapis.com/r8-releases/raw")
}
}
dependencies {
classpath 'com.android.tools:r8:8.0.46'
classpath 'com.android.tools.build:gradle:7.4.1'
}
}
android {
compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.0.3'
}
Bước 2 – Di chuyển từ Proguard hoặc Dexguard sang R8
AGP v7.4 trở lên sử dụng R8 làm công cụ rút gọn, làm rối mã nguồn và tối ưu hoá mặc định cho tệp nhị phân, do đó không cần thực hiện hành động đặc biệt nào vào lúc này.
Nếu dự án được di chuyển từ AGP 4.0 trở lên, AGP có thể đưa ra các cảnh báo sau về việc xoá tệp:
- Mức sử dụng
useProguard true
trong tệpbuild.gradle
- Mức sử dụng
android.enableR8=false
trong tệpgradle.properties
Việc xoá những dòng này thường sẽ giải quyết được những vấn đề đó.
Di chuyển từ Kotlin 1.6 sang 1.9
Bước 1 – Di chuyển sang trình bổ trợ Kotlin cho Gradle 1.9.0
Cập nhật phiên bản Trình bổ trợ Kotlin cho Gradle trong mô-đun cấp cao nhất của ứng dụng
tệp build.gradle. Đừng quên thêm org.jetbrains.kotlin:kotlin-gradle-plugin
trong các phần phụ thuộc từ khối buildscript phòng trường hợp thiếu.
buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0"
}
}
Bạn phải di chuyển ứng dụng của mình khỏi Kotlin- synthetics phòng khi bạn đến từ Trình bổ trợ Kotlin cho Gradle 1.6.X hoặc 1.7.X. Tham khảo quy trình di chuyển chính thức hướng dẫn dành cho biết thêm thông tin.
Bước 2 – Nâng cấp kotlin-stdlib lên 1.9.0
Nâng cấp kotlin-stblib
lên 1.9.0 trong tệp build.gradle của ứng dụng.
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.9.0"
}
Hãy nhớ xoá mọi tham chiếu đến kotlin-stdlib-jdk7
hoặc
kotlin-stdlib-jdk8
. Cả hai phần phụ thuộc đã được hợp nhất thành
kotlin-stdlib
bắt đầu trong Kotlin
1.8.0.
Ngừng sử dụng StatusListener
Giao diện StatusListener
hiện không được dùng nữa (sẽ bị xoá trong phiên bản 6) và thay vào đó
trong tổng số DriverStatusListener
.
Có 3 thay đổi chủ yếu:
- Thay đổi giao diện
implements
từStatusListener
thànhDriverStatusListener
. - Thêm tham số
Nullable
cause
vàoupdateStatus
. - Gọi
DriverContextBuilder.setDriverStatusListener
thay vìsetStatusListener
.
DriverStatusListener
có cùng cấu trúc với StatusListener
. Chính
Sự khác biệt giữa chúng là DriverStatusListener.updateStatus()
sẽ lấy
tham số bổ sung có tên là cause
. Điều này cung cấp cho người dùng thông tin chi tiết về nguyên nhân gây ra
bản cập nhật có cấp trạng thái lỗi.
Thông thường, bạn sẽ sử dụng cause
để truy xuất mã lỗi do Fleet trả về
Công cụ cập nhật vị trí không thành công.
Mẫu sau minh hoạ cách triển khai StatusListener
:
class MyStatusListener implements StatusListener {
/** Called when background status is updated during actions such as location reporting. */
@Override
public void updateStatus(
StatusLevel statusLevel, StatusCode statusCode, String statusMsg) {
// Implementation
}
}
// Inject StatusListener into DriverContext.
DriverContextBuilder.setStatusListener(new MyStatusListener());
Sau đây là ví dụ về cách triển khai DriverStatusListener
mẫu:
class MyStatusListener implements DriverStatusListener {
/** Called when background status is updated during actions such as location reporting. */
@Override
public void updateStatus(
StatusLevel statusLevel, StatusCode statusCode, String statusMsg, @Nullable Throwable cause) {
// Existing implementation
if (cause != null && cause instanceof StatusRuntimeException) {
if (Status.NOT_FOUND.getCode().equals(cause.getStatus().getCode())) {
// NOT_FOUND gRPC exception thrown by Fleet Engine.
}
}
}
}
DriverContextBuilder.setStatusListener(new MyStatusListener());
Triển khai DriverStatusListener
dưới dạng giao diện chức năng
DriverStatusListener
hỗ trợ các giao diện chức năng Java cũng giống như
phiên bản trước đó. Sau đây là một ví dụ:
DriverContextBuilder.setDriverStatusListener((statusLevel, statusCode, statusMsg, cause) -> {
if (cause != null && cause instanceof StatusRuntimeException) {
if (Status.NOT_FOUND.getCode().equals(cause.getStatus().getCode())) {
// NOT_FOUND gRPC exception thrown by Fleet Engine.
}
}
});