このガイドでは、バージョン 5.0 に移行するために必要な変更について説明します。
Gradle と Android Gradle プラグインのアップデート
Gradle と Android Gradle プラグインのバージョンをアップグレードする
まず、Gradle と Android Gradle プラグインのバージョンをアップグレードします。このアップグレード 特定の SDK 依存関係との互換性が向上 (Kotlin 1.9 を含む)を実装し、いくつかの重要なバグを修正しました。
この SDK メジャー リリースでは、 Android アプリ プロジェクト:
- Gradle バージョンが v7.5.0 以降かつ v7.6.0 以降であること。
- v7.4.x の範囲の Android Gradle プラグイン(AGP)バージョン。
より高いバージョンのプラグインをターゲットにできます。ただし、 非推奨の警告が表示されるか、一部の新機能が動作しない可能性があります。
Gradle のバージョンを変更するには、プロジェクトの
/gradle/wrapper/gradle-wrapper.properties
ファイル
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
Android Gradle プラグインのバージョンを変更するには、このファイルを開いて build.gradle
ファイルを変更します。
buildscript
ブロックが含まれていることを確認します。例:
buildscript {
repositories {
google()
mavenCentral()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.4.1'
}
}
Java 7 から Java 8 ライブラリへのサポートの移行
ステップ 1 - Java 8 ライブラリのサポートを有効にする
SDK の最小 API レベルは 23 で、必要な AGP バージョンは 7.4 以降であるため、 ここに示されているソース ドキュメントと少し異なります。
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'
}
ステップ 2 - Proguard または Dexguard から R8 に移行する
AGP v7.4 以降では、デフォルトの圧縮、難読化、最適化ツールとして R8 を使用する そのため、この時点では特別な操作は必要ありません。
プロジェクトが AGP 4.0 以降から移行された場合、AGP は次の警告を発行することがあります。 ファイルの削除について:
build.gradle
ファイルでのuseProguard true
の使用状況gradle.properties
ファイルでのandroid.enableR8=false
の使用状況
通常、これらの行を削除することで、問題は解決します。
Kotlin 1.6 から 1.9 への移行
ステップ 1 - Kotlin Gradle プラグイン 1.9.0 に移行する
アプリの最上位モジュールで Kotlin Gradle プラグインのバージョンを更新する
追加します。org.jetbrains.kotlin:kotlin-gradle-plugin
を必ず追加してください
buildscript ブロックの依存関係にあります。
buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0"
}
}
今後の予定に備えて、Kotlin 合成からアプリを移行する必要があります。 Kotlin Gradle プラグイン 1.6.X または 1.7.X から。公式の移行に関するガイドを ガイド ご確認ください。
ステップ 2 - kotlin-stdlib を 1.9.0 にアップグレードする
アプリの build.gradle ファイルで kotlin-stblib
を 1.9.0 にアップグレードします。
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.9.0"
}
kotlin-stdlib-jdk7
への参照または URL への参照は必ず削除してください。
kotlin-stdlib-jdk8
。両方の依存関係が統合され、
kotlin-stdlib
(Kotlin で開始)
1.8.0.
StatusListener のサポート終了
StatusListener
インターフェースのサポートは終了し、v6 で削除される予定です(v6 で削除される予定です)。
/DriverStatusListener
。
主な変更点は次の 3 つです。
implements
インターフェースをStatusListener
からDriverStatusListener
。Nullable
cause
パラメータをupdateStatus
に追加します。- 代わりに
DriverContextBuilder.setDriverStatusListener
を呼び出します。setStatusListener
。
DriverStatusListener
は StatusListener
と同じ構造を共有します。主な
違いは、DriverStatusListener.updateStatus()
が
cause
という名前の追加パラメータを使用します。これにより、発生している事象の原因について
エラー ステータス レベルで更新できます。
通常は、cause
を使用して Fleet から返されるエラーコードを取得します。
エンジンで処理します。
次のサンプルは、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());
DriverStatusListener
の実装例を次に示します。
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());
DriverStatusListener
を機能インターフェースとして実装する
DriverStatusListener
は、
あります。次に例を示します。
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.
}
}
});