W tym przewodniku opisano zmiany niezbędne do migracji do wersji 5.0.
Aktualizacje Gradle i wtyczki Androida do obsługi Gradle
Uaktualnij wersje wtyczki Gradle i Androida do obsługi Gradle
Najpierw uaktualnij wersje wtyczki Gradle i Androida do obsługi Gradle. To uaktualnienie zapewnia lepszą zgodność z niektórymi zależnościami pakietu SDK. (w tym Kotlin 1.9), a także kilka ważnych poprawek.
Ta główna wersja pakietu SDK wymaga tych zależności wersji w przypadku Twojego Projekt aplikacji na Androida:
- wersję Gradle w wersji 7.5.0 lub nowszej niż 7.6.0.
- wersji wtyczki Androida do obsługi Gradle (AGP) w zakresie 7.4.x.
Możesz kierować użytkowników na wyższą wersję wtyczek; jednak możesz uruchomić ostrzeżenia o wycofaniu, a niektóre nowe funkcje mogą nie działać.
Aby zmodyfikować wersję Gradle, zmodyfikuj wiersz w pliku
/gradle/wrapper/gradle-wrapper.properties
plik
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
Aby zmodyfikować wersję wtyczki Androida do obsługi Gradle, zmodyfikuj plik build.gradle
, który
zawiera blok buildscript
. Na przykład:
buildscript {
repositories {
google()
mavenCentral()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.4.1'
}
}
Migracja obsługi biblioteki Java 7 do biblioteki Java 8
Krok 1. Włącz obsługę biblioteki Java 8
Ponieważ minimalny poziom interfejsu API SDK to 23, a wymagana wersja AGP to 7.4 lub nowsza, konfiguracji jest nieco inny niż wspomniana dokumentacja źródłowa.
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'
}
Krok 2. Przejdź z Proguard lub Dexguard na R8
AGP w wersji 7.4 lub nowszej używa R8 jako domyślnego narzędzia do zmniejszania, zaciemniania kodu i optymalizacji dla pliku binarnego, więc na razie nie musisz nic robić.
Jeśli projekt został przeniesiony z AGP w wersji 4.0 lub nowszej, interfejs AGP może wyświetlić następujące ostrzeżenia o usuwaniu plików:
- Użycie usługi
useProguard true
wbuild.gradle
pliku - Użycie usługi
android.enableR8=false
wgradle.properties
pliku
Usunięcie tych wierszy zazwyczaj rozwiązuje te problemy.
Migracja do Kotlin 1.6 do wersji 1.9
Krok 1. Przejdź na wtyczkę Kotlin Gradle 1.9.0
Zaktualizuj wersję wtyczki Kotlin Gradle w module najwyższego poziomu aplikacji
build.gradle. Pamiętaj, aby dodać: org.jetbrains.kotlin:kotlin-gradle-plugin
w zależnościach z bloku buildscript, na wypadek gdyby go brakowało.
buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0"
}
}
Musisz przeprowadzić migrację swojej aplikacji z Kotlin-syntetics, jeśli zamierzasz z wtyczki Kotlin Gradle w wersji 1.6.X lub 1.7.X. Zapoznaj się z oficjalną migracją przewodnika po znajdziesz więcej informacji.
Krok 2. Uaktualnij kotlin-stdlib do wersji 1.9.0
Uaktualnij kotlin-stblib
do wersji 1.9.0 w pliku build.gradle aplikacji.
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.9.0"
}
Usuń wszelkie odniesienia do kotlin-stdlib-jdk7
lub
kotlin-stdlib-jdk8
Obie zależności zostały skonsolidowane w
kotlin-stdlib
, początek w Kotlin
1.8.0.
Wycofanie elementu StatusListener
Interfejs StatusListener
został wycofany (do usunięcia w wersji 6) na korzyść
z DriverStatusListener
.
Wprowadziliśmy głównie 3 zmiany:
- Zmień interfejs
implements
zStatusListener
naDriverStatusListener
- Dodaj parametr
cause
Nullable
do kampaniiupdateStatus
. - Wywołaj funkcję
DriverContextBuilder.setDriverStatusListener
zamiastsetStatusListener
DriverStatusListener
ma taką samą strukturę jak StatusListener
. Główny
różnica między nimi polega na tym, że DriverStatusListener.updateStatus()
pobiera
dodatkowy parametr o nazwie cause
. Zapewnia to użytkownikom informacje na temat przyczyny
aktualizować o poziom stanu błędu.
Zwykle używasz cause
do pobrania kodu błędu zwróconego przez flotę
Silnik dla nieudanych aktualizacji lokalizacji.
Poniższy przykład pokazuje, jak wdrożyć 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());
Poniżej znajduje się przykładowa implementacja 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());
Zaimplementuj DriverStatusListener
jako funkcjonalny interfejs
DriverStatusListener
obsługuje funkcjonalne interfejsy Java tak samo jak
nad konkurencją. Oto przykład:
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.
}
}
});