In diesem Leitfaden werden die Änderungen beschrieben, die für die Migration zu Version 5.0 erforderlich sind.
Aktualisierungen von Gradle und dem Android-Gradle-Plug-in
Gradle- und Android-Gradle-Plug-in-Versionen aktualisieren
Führen Sie zuerst ein Upgrade der Gradle- und Android-Gradle-Plug-in-Versionen durch. Dieses Upgrade bietet eine bessere Kompatibilität mit bestimmten SDK-Abhängigkeiten. (einschließlich Kotlin 1.9) sowie einige wichtige Fehlerkorrekturen.
Für diese Hauptversion des SDK sind die folgenden Versionsabhängigkeiten für Ihr Android-Anwendungsprojekt erforderlich:
- eine Gradle-Version von mindestens 7.5.0, aber nicht höher als 7.6.0.
- ein Android Gradle-Plug-in (AGP) der Version 7.4.x
Sie können auch eine höhere Version der Plug-ins anvisieren. Möglicherweise erhalten Sie dann jedoch Warnungen zur Einstellung oder einige neue Funktionen funktionieren nicht.
Wenn Sie die Gradle-Version ändern möchten, ändern Sie die Zeile in der /gradle/wrapper/gradle-wrapper.properties
-Datei Ihres Projekts.
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
Wenn Sie die Version des Android-Gradle-Plug-ins ändern möchten, ändern Sie die Datei build.gradle
, die den Block buildscript
enthält. Beispiel:
buildscript {
repositories {
google()
mavenCentral()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.4.1'
}
}
Migration der Bibliotheksunterstützung von Java 7 zu Java 8
Schritt 1: Unterstützung der Java 8-Bibliothek aktivieren
Da das minimale API-Level des SDK 23 ist und die erforderliche AGP-Version 7.4 oder höher ist, unterscheidet sich die Konfiguration geringfügig von der in der genannten Quelldokumentation.
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'
}
Schritt 2: Von ProGuard oder Dexguard zu R8 migrieren
AGP 7.4 und höher verwendet R8 als Standardtool zum Verkleinern, Verschleieren und Optimieren für die Binärdatei, sodass an dieser Stelle keine gesonderten Maßnahmen erforderlich sind.
Wenn das Projekt von AGP 4.0 oder höher migriert wird, gibt AGP möglicherweise die folgenden Warnungen aus: zum Entfernen von Dateien:
useProguard true
-Nutzung inbuild.gradle
-Dateiandroid.enableR8=false
-Nutzung ingradle.properties
-Datei
Durch das Entfernen dieser Zeilen werden diese Probleme normalerweise behoben.
Migration von Kotlin 1.6 zu 1.9
Schritt 1: Zum Kotlin Gradle-Plug-in 1.9.0 migrieren
Aktualisieren Sie die Version des Kotlin-Gradle-Plug-ins in der Datei „build.gradle“ des Moduls auf der obersten Ebene Ihrer Anwendung. Fügen Sie org.jetbrains.kotlin:kotlin-gradle-plugin
gegebenenfalls den Abhängigkeiten aus dem Block „buildscript“ hinzu.
buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0"
}
}
Sie müssen Ihre Anwendung von Kotlin-synthetics migrieren, aus Kotlin-Gradle-Plug-in 1.6.X oder 1.7.X. Weitere Informationen finden Sie in der offiziellen Migration Leitfaden für erhalten Sie weitere Informationen.
Schritt 2: Upgrade von kotlin-stdlib auf 1.9.0 durchführen
Aktualisieren Sie kotlin-stblib
in der build.gradle-Datei Ihrer Anwendung auf 1.9.0.
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.9.0"
}
Entfernen Sie alle Verweise auf kotlin-stdlib-jdk7
oder
kotlin-stdlib-jdk8
. Beide Abhängigkeiten wurden in
kotlin-stdlib
ab Kotlin
1.8.0.
Einstellung von StatusListener
Die StatusListener
-Benutzeroberfläche wird eingestellt und in Version 6 entfernt. Stattdessen wird DriverStatusListener
verwendet.
Es gibt im Wesentlichen drei Änderungen:
implements
-Schnittstelle vonStatusListener
ändern zuDriverStatusListener
- Fügen Sie
updateStatus
einenNullable
cause
-Parameter hinzu. - Rufen Sie die
DriverContextBuilder.setDriverStatusListener
anstelle dersetStatusListener
.
DriverStatusListener
hat dieselbe Struktur wie StatusListener
. Die wichtigsten
Der Unterschied besteht darin, dass DriverStatusListener.updateStatus()
zusätzlichen Parameter namens cause
. So erhalten Nutzer Informationen zur Ursache eines Updates mit Fehlerstatusebene.
In der Regel verwenden Sie cause
, um den von der Flotte zurückgegebenen Fehlercode abzurufen
Engine für fehlgeschlagene Standortaktualisierungen.
Das folgende Beispiel zeigt, wie StatusListener
implementiert wird:
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());
Im Folgenden sehen Sie eine Beispielimplementierung von 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
als funktionale Schnittstelle implementieren
DriverStatusListener
unterstützt funktionale Java-Schnittstellen wie seine
Vorgänger. Hier ein Beispiel:
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.
}
}
});