Bu kılavuzda, sürüm 5.0'a geçmek için yapılması gereken değişiklikler açıklanmaktadır.
Gradle ve Android Gradle Plugin güncellemeleri
Gradle ve Android Gradle Plugin sürümlerini yükseltme
Öncelikle Gradle ve Android Gradle Plugin sürümünüzü yükseltin. Bu yükseltme, bazı önemli hata düzeltmelerinin yanı sıra belirli SDK bağımlılıklarıyla (Kotlin 1.9 dahil) daha iyi uyumluluk sunar.
Bu SDK ana sürümü, Android uygulaması projeniz için aşağıdaki sürüm bağımlılıklarını gerektirir:
- En az 7.5.0, 7.6.0'dan yüksek olmayan bir Gradle sürümü
- v7.4.x aralığında bir Android Gradle Eklentisi (AGP) sürümü.
Eklentilerin daha yüksek bir sürümünü hedefleyebilirsiniz ancak kullanımdan kaldırma uyarılarıyla karşılaşabilirsiniz veya bazı yeni özellikler çalışmayabilir.
Gradle sürümünü değiştirmek için projenizin /gradle/wrapper/gradle-wrapper.properties
dosyasındaki satırı değiştirin
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
Android Gradle Plugin sürümünü değiştirmek için buildscript
blokunu içeren build.gradle
dosyasını değiştirin. Örneğin:
buildscript {
repositories {
google()
mavenCentral()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.4.1'
}
}
Java 7'den Java 8'e kitaplık desteği geçişi
1. Adım - Java 8 kitaplık desteğini etkinleştirin
SDK min. API düzeyi 23 ve gerekli AGP sürümü 7.4 ve üzeri olduğundan yapılandırma, belirtilen kaynak belgelerden biraz farklıdır.
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. Adım - ProGuard veya DexGuard'dan R8'e geçiş
AGP 7.4+ sürümü, ikili program için varsayılan küçültme, kod karartma ve optimizasyon aracı olarak R8'i kullanır. Bu nedenle, bu noktada özel bir işlem yapılması gerekmez.
Proje, AGP 4.0 ve sonraki sürümlerden birine taşınırsa AGP, dosya kaldırma işlemleriyle ilgili olarak aşağıdaki uyarıları verebilir:
build.gradle
dosyasındauseProguard true
kullanımıgradle.properties
dosyasındaandroid.enableR8=false
kullanımı
Bu satırları kaldırmak genellikle bu sorunları çözer.
Kotlin 1.6'dan 1.9'a taşıma
1. Adım - Kotlin Gradle Plugin 1.9.0'a taşıyın
Uygulamanızın üst düzey modülünün build.gradle dosyasında Kotlin Gradle Plugin sürümünü güncelleyin. Eksik olması ihtimaline karşı buildscript bloğundaki bağımlılıklara org.jetbrains.kotlin:kotlin-gradle-plugin
öğesini eklediğinizden emin olun.
buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0"
}
}
Kotlin Gradle Plugin 1.6.X veya 1.7.X'ten geliyorsanız uygulamanızı Kotlin-synthetics'ten taşımanız gerekir. Daha fazla bilgi için resmi taşıma kılavuzuna bakın.
2. Adım - kotlin-stdlib'i 1.9.0 sürümüne yükseltin
Uygulamanızın build.gradle dosyasında kotlin-stblib
uygulamasını 1.9.0 sürümüne yükseltin.
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.9.0"
}
kotlin-stdlib-jdk7
veya kotlin-stdlib-jdk8
ile ilgili tüm referansları kaldırdığınızdan emin olun. Her iki bağımlılık da Kotlin 1.8.0'dan itibaren kotlin-stdlib
altında birleştirilmiştir.
StatusListener'ın kullanımdan kaldırılması
StatusListener
arayüzü artık kullanımdan kaldırılmıştır (v6'da kaldırılacaktır) ve bunun yerine DriverStatusListener
kullanıma sunulmuştur.
Temel olarak 3 değişiklik yapılmıştır:
StatusListener
olanimplements
arayüzünüDriverStatusListener
olarak değiştirin.updateStatus
öğesineNullable
cause
parametresi ekleyin.setStatusListener
yerineDriverContextBuilder.setDriverStatusListener
yöntemini çağırın.
DriverStatusListener
, StatusListener
ile aynı yapıyı paylaşıyor. Bunlar arasındaki temel fark, DriverStatusListener.updateStatus()
aracının cause
adlı ek bir parametre almasıdır. Bu, kullanıcılara hata durumu düzeyinde bir güncellemenin nedeni hakkında detaylı bilgi sağlar.
Genellikle, başarısız konum güncellemeleri için Fleet Engine tarafından döndürülen hata kodunu almak üzere cause
yöntemini kullanırsınız.
Aşağıdaki örnekte, StatusListener
yönteminin nasıl uygulanacağı gösterilmektedir:
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());
Aşağıda örnek bir DriverStatusListener
uygulaması gösterilmektedir:
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
işlevini işlevsel bir arayüz olarak uygulayın
DriverStatusListener
, öncekisi gibi Java işlevsel arayüzlerini desteklemektedir. Bunun bir örneğini aşağıda bulabilirsiniz:
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.
}
}
});