Bu kılavuzda, 5.0 sürümüne geçiş için gereken 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 Plugin sürümlerinizi yükseltin. Bu yükseltme belirli SDK bağımlılıklarıyla daha iyi uyumluluk içerir (Kotlin 1.9 dahil) ve bazı kritik hata düzeltmeleri.
Bu SDK ana sürümü, Android uygulaması projesi:
- En az 7.5.0 ancak en fazla 7.6.0 sürümüne sahip 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 desteği sonlandırılma 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
dosya
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
Android Gradle eklentisi 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 minimum API düzeyi 23, gerekli AGP sürümü 7.4 veya üstü olduğundan yapılandırması, belirtilen kaynak belgelerinden 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 7.4 ve sonraki sürümleri, ikili dosyalar için varsayılan sıkıştırma, karartma ve optimizasyon aracı olarak R8'i kullandığından bu noktada özel bir işlem yapmanız gerekmez.
Proje AGP 4.0 ve sonraki sürümlerden taşınırsa AGP aşağıdaki uyarıları gösterebilir. dosya kaldırma işlemleri hakkında:
build.gradle
dosyasındauseProguard true
kullanımıgradle.properties
dosyadaandroid.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 Taşıma
Uygulamanızın üst düzey modülündeki build.gradle dosyasında Kotlin Gradle eklentisi sürümünü güncelleyin. Eksik olması durumunda buildscript bloğundaki bağımlılıklara org.jetbrains.kotlin:kotlin-gradle-plugin
eklediğinizden emin olun.
buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0"
}
}
Gitme ihtimalinize karşı uygulamanızı Kotlin-synthetics'ten taşımanız gerekir Kotlin Gradle Eklentisi 1.6.X veya 1.7.X'ten. Daha fazla bilgi için resmi taşıma kılavuzuna bakın.
2. Adım - kotlin-stdlib'i 1.9.0'a yükseltin
Uygulamanızın build.gradle dosyasında 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
. Her iki bağımlılık da Kotlin 1.8.0'dan itibaren kotlin-stdlib
olarak birleştirildi.
StatusListener desteğinin sonlandırılması
StatusListener
arayüzünün desteği sonlandırıldı (v6'da kaldırılacak). Bunun yerine DriverStatusListener
arayüzü kullanılacak.
Temel olarak 3 değişiklik vardır:
implements
arayüzünüStatusListener
yerineDriverStatusListener
olarak değiştirin.updateStatus
öğesineNullable
cause
parametresi ekleyin.DriverContextBuilder.setDriverStatusListener
setStatusListener
.
DriverStatusListener
, StatusListener
ile aynı yapıya sahiptir. Aralarındaki temel fark, DriverStatusListener.updateStatus()
'ün cause
adlı ek bir parametre almasıdır. Bu sayede kullanıcılar, hata durumu düzeyinde bir güncellemenin nedeni hakkında bilgi edinebilir.
Genellikle, Fleet tarafından döndürülen hata kodunu almak için cause
yöntemini kullanırsınız.
Başarısız konum güncellemeleri motoru.
Aşağıdaki örnekte, StatusListener
öğesinin 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
öğesini işlevsel bir arayüz olarak uygulayın
DriverStatusListener
, önceki gibi Java işlevsel arayüzlerini destekler
öncül. Aşağıda bununla ilgili bir örnek verilmiştir:
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.
}
}
});