Android Sürücü SDK'sı 5.0 Taşıma Kılavuzu

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 v7.5.0 ancak v7.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 bu süre içinde uyarı alabilir 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 build.gradle dosyasını değiştirin. buildscript bloğunu içerir. Ö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

Kaynak

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çin

R8, kaynak

AGP v7.4 ve sonraki sürümler varsayılan daraltma, kod karartma ve optimizasyon aracı olarak R8'i kullanır bu nedenle şu anda özel bir işlem yapılması 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 dosyada useProguard true kullanımı
  • gradle.properties dosyada android.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

Kaynak

Uygulamanızın üst düzey modülünde Kotlin Gradle eklentisi sürümünü güncelleyin build.gradle dosyasını yükleyin. org.jetbrains.kotlin:kotlin-gradle-plugin eklediğinizden emin olun eksik olması ihtimaline karşı Buildscript bloğundaki bağımlılıkları girin.

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. Resmi taşıma rehberi daha fazla bilgi edinin.

2. Adım - kotlin-stdlib'i 1.9.0'a yükseltin

Kaynak

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 aşağıdaki gibi Kotlin ile başlayan kotlin-stdlib 1.8.0.

StatusListener desteğinin sonlandırılması

StatusListener arayüzü artık kullanımdan kaldırıldı (v6'da tamamen kaldırılacak). / DriverStatusListener.

Temel olarak 3 değişiklik söz konusudur:

  1. implements arayüzünü StatusListener yerine şu şekilde değiştir: DriverStatusListener.
  2. updateStatus öğesine Nullable cause parametresi ekleyin.
  3. DriverContextBuilder.setDriverStatusListener setStatusListener.

DriverStatusListener, StatusListener ile aynı yapıya sahiptir. Ana arasındaki fark şudur: DriverStatusListener.updateStatus() cause adlı ek parametre. Bu sayede, kullanıcılara bir sorunla ilgili hata durumu düzeyiyle güncellenir.

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.
    }
  }
});