SDK Uzantıları

SDK Uzantıları modüler sistemden yararlanır bileşenleri ekleyin kullanıma sunduk. Bu API'ler Son kullanıcılar Google Play aracılığıyla modül güncellemeleri aldığında cihazlara teslim edilir sistem güncellemelerine bakın. Uygulaması geliştiriciler, şu ana kadar SDK'da orijinal olarak bulunmayan işlevlere erişebilirsiniz. Android'in sürümleri.

API Sürümleri

Android cihazlar, Android 11'den (API düzeyi 30) itibaren bir dizi SDK içerir Uzantılar'ı tıklayın. Yeni API'ler eklendiğinde bir API düzeyine dahil edilirler, ancak belirli bir sürümün SDK uzantısına da dahil edilmelidir. Örneğin, ACTION_PICK_IMAGES Fotoğraf Seçici için API, Android 13'te (API düzeyi 33) herkese açık SDK'ya eklendi. ancak R Uzantıları Sürüm 2'den başlayan SDK uzantıları aracılığıyla da kullanılabilir. SDK uzantısı adları bir tam sayı sabitine karşılık gelir. bir sabit değer Build.VERSION_CODES veya bir SdkExtensions sınıfında tanımlanır (örneğin, SdkExtensions.AD_SERVICES) tıklayın.

Hangi SDK Uzantılarının kullanılacağını belirleme

SDK Extension API'lerini kullanabilmek için öncelikle hangi SDK'ların olduğunu belirlemeniz gerekir uygulamanızın kullanım alanlarını destekleyen API'leri dahil edin.

SDK Extension API'lerinin API referans sayfaları, en eski SDK'yı belirtir uygulamanızın bir API'ye erişmek için kullanabileceği uzantı sürümünü gösterir. Dokümanlar bir Android platform sürümü de (API düzeyi ile referans verilen) belirtirse API, ilgili Android sürümünü veya sonraki sürümleri çalıştıran tüm cihazlarda da kullanılabilir.

Örneğin ACTION_PICK_IMAGES, herkese açık SDK'da genel olarak kullanılabilir. (API düzeyi 33) başlar, ancak şu ana kadar cihazlarda da mevcuttur cihaz en az R sürümüne sahip olduğu sürece Android 11 (API düzeyi 30) sürümüne Uzantılar Sürümü 2:

SDK Uzantılarının parçası olan API'ler, API'de uzantı sürümlerini gösterir
referans
dokümanlar

Bu API'yi kullanmak için en azından API düzeyinde bir SDK ile derleme yapmanız gerekir 33 veya En az 2 olan Uzantı Düzeyi.

Bir uzantı SDK'sı kullanmak için aşağıdaki adımları izleyin:

  1. Özelliği kontrol ederek ihtiyacınız olan minimum uzantı sürümünü bulun dokümanları ve API referansını ekleyin.
  2. Özellik grubunuz için gerekli uzantı sürümünü belirledikten sonra Android Studio'da SDK Yöneticisi'ni açın.
  3. İlgili uzantıya sahip Android SDK Platformu girişini seçin sürümü (veya API'ler eklemeli olduğundan daha yüksek bir sürüm). Örnek: Android SDK Platformu 33, Uzantı Düzeyi 4.
  4. Bu değerleri, uygulamanızın build.gradle.kts veya build.gradle bölümünde beyan edin dosya:

    Eski

    android {
        compileSdk 33
        compileSdkExtension 4
        ...
    }
    

    Kotlin

    android {
        compileSdk = 33
        compileSdkExtension = 4
        ...
    }
    

SDK Uzantılarının kullanılabilir olup olmadığını kontrol etme

Uygulamanız, çalışma zamanında hangi SDK Uzantısı sürümlerinin mevcut olduğunu kontrol edebilir ve geliştirme sırasında Android Debug'ı kullanarak uzantı sürümlerini arayabilirsiniz Aşağıdaki bölümlerde açıklandığı gibi Bridge (adb) komutları:

Çalışma zamanında kontrol et

Uygulamanız, çalışma zamanında SDK Uzantılarının belirli bir web sitesi için kullanılabilir olup olmadığını kontrol edebilir kullanılan platform sürümünü getExtensionVersion() yöntemidir. Örneğin, aşağıdaki kod uzantı sürüm 2'nin Android 11 (API düzeyi 30) SDK Uzantısı için kullanılabilir:

Kotlin

fun isPhotoPickerAvailable(): Boolean {
    return SdkExtensions.getExtensionVersion(Build.VERSION_CODES.R) >= 2
    // Safely use extension APIs that are available with Android 11 (API level 30) Extensions Version 2, such as Photo Picker.
}

Java

public static final boolean isPhotoPickerAvailable() {
    return SdkExtensions.getExtensionVersion(Build.VERSION_CODES.R) >= 2;
}

Bu, mevcut bir kontrol talebine dayalı olarak Build.VERSION.SDK_INT:

Kotlin

fun isPhotoPickerAvailable(): Boolean {
    return Build.VERSION.SDK_INT >= 33
}

Java

public static final boolean isPhotoPickerAvailable() {
    return Build.VERSION.SDK_INT >= 33;
}

Bu SDK_INT kontrolü hâlâ güvenli ve geçerlidir ancak isPhotoPickerAvailable, Uzantı API'si kullanılabilir olsa bile bazı cihazlarda "yanlış" değerini döndürür. Kullanıcı SDK_INT kontrolü optimum değildir ve uzantı sürüm kontrolü kontrol etmenin daha iyi bir yolu olabilir. SDK_INT daha fazla özelliğe sahip tüm cihazlar 33 (Android 13 veya sonraki sürümler) veya sonraki sürümler için Fotoğraf Seçici API'leri herkese açık SDK, ancak SDK_INT sürümü 33'ten az olan cihazlar var (ör. Android 11, 12 ve 12L) erişebilir. en az 2 sürümleri.

Bu durumda, uzantı sürüm kontrolü kullanmak, uygulamanızın ek işlevler sunar. SDK uzantısı adlarını ve sabit değerleri içeren bir liste görmek için bir cihazda belirli SDK Uzantılarını kontrol etme.

Reklam Hizmetleri Uzantıları

Genel SDK Uzantıları grubuna benzer şekilde, AdServices API referansı bazen bir API'nin, "Reklam Hizmetleri Uzantıları"nın bir parçası olduğunu belirtir sürümünü değil. Genel SDK Uzantılarından farklı olarak, Reklam Hizmetleri Uzantıları Cihazda hangi sürümün olduğunu belirlemek için SdkExtensions.AD_SERVICES sabit değeri:

Kotlin

fun isAdServicesAvailable(): Boolean {
    return SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4
}

Java

public static final boolean isAdServicesAvailable() {
    return SdkExtensions.getExtensionVersion(SdkExtensions.AD_SERVICES) >= 4;
}

Reklam Hizmetleri Uzantıları'ndaki özellikler ve hakkında daha fazla bilgi edinmek için Reklam Hizmetleri Uzantıları dokümanlarına göz atın.

Yardımcı yöntemler

Bazı durumlarda SDK Uzantılarının, ve SDK Extension API'lerinin kullanılabilirlik durumunu gösteriyor. Örneğin, bir Jetpack Photo Picker'ı kontrol edecek kitaplık işlevi , soyutlayan koşullu sürüm kontrollerini soyutlar.

Araç desteği

Android Studio Flamingo'da | 2022.2.1 veya sonraki bir sürüm yüklüyse lint aracı, NewAPI kontrolünün bir parçası olarak SDK Uzantısı sürümleriyle ilgili sorunlar olduğunu varsayalım. Ayrıca, Android Studio, şu özelliklere sahip API'ler için doğru sürüm kontrollerini otomatik olarak oluşturabilir: SDK Uzantıları kullanılarak başlatıldı.

Lint aracı, minimum SDK Uzantıları sayısının API çağırmak için gereken sürüm karşılanmadı.

SDK Uzantı adları ve sabitleri

Aşağıdaki tabloda, varsayılan olarak ayarlanan farklı SDK Uzantısı API referans belgelerinde listelenen, uygulamanızın şu işlemler için kullanabileceği sabit değerlerle eşleşir: çalışma zamanında API kullanılabilirliğini kontrol edin. SDK Uzantılarının genel grubu herkese açık her SDK, Build.VERSION_CODES.

SDK Uzantısı adı Sabit Uygun cihazlar
R Uzantıları VERSION_CODES.R Android 11 (API Düzeyi 30) ve sonraki sürümler
S Uzantıları VERSION_CODES.S Android 12 (API Düzeyi 31) ve sonraki sürümler
T Uzantıları VERSION_CODES.TIRAMISU Android 13 (API düzeyi 33) ve sonraki sürümler
Reklam Hizmetleri Uzantıları SdkExtensions.AD_SERVICES Android 13 (API düzeyi 33) ve sonraki sürümler

Adb kullanarak kontrol et

Adb kullanan bir cihazda hangi SDK uzantılarının kullanılabildiğini kontrol etmek için şu komutu kullanın:

adb shell getprop | grep build.version.extensions

Komutu çalıştırdıktan sonra şuna benzer bir çıkış görürsünüz:

[build.version.extensions.r]: [3] # Android 11 (API level 30) and higher
[build.version.extensions.s]: [3] # Android 12 (API level 31) and higher
[build.version.extensions.t]: [3] # Android 13 (API level 33) and higher

Her satırda, cihazda mevcut olan bir SDK uzantısı, ilgili uzantı sürümünü (bu örnekte 3) belirtin.