Bu kılavuzda, 5.0 sürümüne geçiş için gerekli değişiklikler açıklanmaktadır.
Gradle ve Android Gradle eklentisi güncellemeleri
Gradle ve Android Gradle eklentisi sürümlerini yükseltme
Öncelikle Gradle ve Android Gradle eklentisi sürümlerinizi yükseltin. Bu yükseltme, belirli SDK bağımlılıklarıyla (Kotlin 1.9 dahil) daha iyi uyumluluğun yanı sıra bazı kritik hata düzeltmelerini içerir.
Bu SDK ana sürümü, Android uygulama projeniz için aşağıdaki sürüm bağımlılıklarını gerektirir:
- En az v7.5.0, en fazla v7.6.0 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şabilir 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 eklentisinin sürümünü değiştirmek için buildscript
bloğunu 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 taşıma
1. adım: Java 8 kitaplık desteğini etkinleştirin
SDK'nın minimum API düzeyi 23 ve gerekli AGP sürümü 7.4 veya üzeri olduğundan yapılandırma, belirtilen kaynak dokümanından 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ş yapın
AGP v7.4+, ikili dosya için varsayılan küçültme, karartma ve optimizasyon aracı olarak R8'i kullandığından bu noktada özel bir işlem yapılması gerekmez.
Proje AGP 4.0 veya sonraki bir sürümden taşındıysa AGP, dosya kaldırma işlemleriyle ilgili aşağıdaki uyarıları verebilir:
build.gradle
dosyasındauseProguard true
kullanımıgradle.properties
dosyasındaandroid.enableR8=false
kullanımı
Bu satırların kaldırılması genellikle bu sorunları çözer.
Kotlin 1.6'dan 1.9'a taşıma
1. adım: Kotlin Gradle eklentisi 1.9.0'a geçiş yapın
Uygulamanızın en üst düzey modülündeki build.gradle dosyasında Kotlin Gradle Eklentisi sürümünü güncelleyin. Eksik olması durumunda org.jetbrains.kotlin:kotlin-gradle-plugin
öğesini buildscript bloğundaki bağımlılıklara eklediğinizden emin olun.
buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0"
}
}
Kotlin Gradle Eklentisi 1.6.X veya 1.7.X'ten geçiş yapıyorsanız uygulamanızı Kotlin-synthetics'ten taşımanız gerekir. Daha fazla bilgi için resmi geçiş kılavuzuna bakın.
2. adım: kotlin-stdlib'i 1.9.0 sürümüne yükseltin
Uygulama build.gradle dosyanızda kotlin-stblib
sürümünü 1.9.0'a 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
içinde birleştirilmiştir.
StatusListener desteğinin sonlandırılması
StatusListener
arayüzü artık kullanımdan kaldırıldı (v6'da kaldırılacak) ve yerine DriverStatusListener
arayüzü kullanılıyor.
Başlıca 3 değişiklik vardır:
implements
arayüzünüStatusListener
olan dildenDriverStatusListener
diline değiştirin.updateStatus
öğesineNullable
cause
parametresini ekleyin.setStatusListener
yerineDriverContextBuilder.setDriverStatusListener
numaralı telefonu arayın.
DriverStatusListener
, StatusListener
ile aynı yapıya sahip. Bu iki işlev arasındaki temel fark, DriverStatusListener.updateStatus()
işlevinin cause
adlı ek bir parametre almasıdır. Bu özellik, kullanıcılara hata durumu düzeyinde bir güncellemenin nedenleri hakkında bilgi verir.
Genellikle, başarısız konum güncellemeleri için Fleet Engine tarafından döndürülen hata kodunu almak üzere cause
kullanırsınız.
Aşağıdaki örnekte StatusListener
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şlevsel arayüz olarak uygulama
DriverStatusListener
, Java işlevsel arayüzlerini önceki sürümünde olduğu gibi destekler. Bununla ilgili bir örnek:
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.
}
}
});