SDK Uzantıları

SDK Uzantıları, daha önce yayınlanan belirli API düzeyleri için herkese açık SDK'ya API eklemek amacıyla modüler sistem bileşenlerinden yararlanır. Bu API'ler, son kullanıcılar Google Play sistem güncellemeleri üzerinden modül güncellemeleri aldığında cihazlara gönderilir. Uygulama geliştiriciler, bu önceki Android sürümleri için başlangıçta SDK'da bulunmayan ek işlevler sağlamak üzere uygulamalarında bu API'leri kullanabilir.

API Sürümü Oluşturma

Android 11'den (API düzeyi 30) itibaren Android cihazlarda bir dizi SDK uzantısı bulunur. Eklenen yeni API'ler bir API düzeyine dahil edilir ancak belirli bir sürümün SDK uzantısına da dahil edilebilir. Örneğin, Fotoğraf Seçici için ACTION_PICK_IMAGES API, Android 13'te (API düzeyi 33) herkese açık SDK'ya eklenmiştir. Ancak, R Extensions Sürüm 2'den itibaren SDK uzantıları aracılığıyla da kullanılabilir. SDK uzantısı adları bir tam sayı sabitine karşılık gelir. Build.VERSION_CODES sabit değeri veya SdkExtensions sınıfında tanımlanan bir değer (SdkExtensions.AD_SERVICES gibi).

Kullanılacak SDK Uzantılarını belirleme

SDK Uzantı API'lerini kullanabilmek için ilk olarak uygulamanızın kullanım alanlarını destekleyen API'leri hangi SDK'ların içerdiğini belirlemeniz gerekir.

SDK Uzantısı API'lerinin API referans sayfaları, uygulamanızın bir API'ye erişmek için kullanabileceği en eski SDK uzantısı sürümünü belirtir. Belgelerde ayrıca bir Android platform sürümü (API düzeyine göre referans verilmiş) belirtilmişse söz konusu API, Android veya sonraki sürümleri çalıştıran tüm cihazlar için de kullanılabilir.

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

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

Bu API'yi kullanmak için en az API düzeyi 33 veya Uzantı Düzeyi en az 2 olan bir SDK'ya göre derleme yapmanız gerekir.

Uzantı SDK'sı kullanmak için aşağıdaki adımları uygulayın:

  1. Kullanmak istediğiniz API'ler için özellik belgelerini ve API referansını kontrol ederek ihtiyacınız olan minimum uzantı sürümünü arayın.
  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ı sürümünü (veya API'ler eklemeli olduğundan daha yüksek bir sürümü) içeren Android SDK Platformu girişini seçin. Örneğin: Android SDK Platformu 33, Uzantı Düzeyi 4.
  4. Bu değerleri uygulamanızın build.gradle.kts veya build.gradle dosyasında beyan edin:

    Modern

    android {
        compileSdk 33
        compileSdkExtension 4
        ...
    }
    

    Kotlin

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

SDK uzantılarının kullanılıp kullanılamadığını kontrol etme

Uygulamanız, çalışma zamanında hangi SDK Uzantısı sürümlerinin mevcut olduğunu kontrol edebilir. Geliştirme sırasında ise aşağıdaki bölümlerde açıklandığı şekilde Android Hata Ayıklama Köprüsü (adb) komutlarını kullanarak uzantı sürümlerini arayabilirsiniz.

Çalışma zamanında kontrol et

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

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, Build.VERSION.SDK_INT temelinde bir kontrol yapmaya benzer:

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çerli ancak uzantı API'si kullanılabilir olsa bile isPhotoPickerAvailable bazı cihazlarda "false" değerini döndürür. Sonuç olarak SDK_INT kontrolü optimum değildir ve uzantı sürümü kontrolü, API kullanılabilirliğini kontrol etmenin daha iyi bir yoludur. SDK_INT değeri 33 veya daha yüksek olan tüm cihazların (Android 13 veya sonraki sürümleri) herkese açık SDK'da Fotoğraf Seçici API'leri vardır. Ancak SDK_INT API'leri en az 2 olan R uzantısı sürümlerine sahip cihazlar da (Android 11, 12 ve 12L gibi) SDK_INT API'lerine erişebilir.

Bu durumda, uzantı sürümü kontrolü kullanmak uygulamanızın daha fazla kullanıcıya ek işlevler sunmasına yardımcı olabilir. Bir cihazdaki belirli SDK uzantılarını kontrol etmek üzere kullanabileceğiniz tüm sabit değerlerin listesi için SDK uzantısı adları ve sabit değerleri bölümüne bakın.

Reklam Hizmetleri Uzantıları

Genel SDK Uzantıları grubuna benzer şekilde, AdServices API referansı bazen bir API'nin "Reklam Hizmetleri Uzantıları" sürümünün bir parçası olduğunu belirtir. Genel SDK Uzantılarının aksine Reklam Hizmetleri Uzantıları, bir cihazda hangi sürümün bulunduğunu belirlemek için SdkExtensions.AD_SERVICES sabitini kullanır:

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 nasıl başlanacağı hakkında daha fazla bilgi edinmek için Reklam Hizmetleri Uzantıları belgelerini inceleyin.

Yardımcı yöntemler

Bazı durumlarda, SDK Uzantıları, SDK Extension API'lerinin kullanılabilirliğini kontrol etmek için Jetpack yardımcı program yöntemlerine sahiptir. Örneğin, koşullu sürüm kontrollerini soyutlayan bir Fotoğraf Seçici kullanılabilirliğini kontrol etmek için Jetpack kitaplık işlevi kullanabilirsiniz.

Araçlar desteği

lint aracı, Android Studio Flamingo | 2022.2.1 veya sonraki sürümlerde NewAPI kontrolünün bir parçası olarak SDK Uzantısı sürümlerindeki sorunları tarayabilir. Buna ek olarak Android Studio, SDK Uzantıları kullanılarak başlatılan API'ler için doğru sürüm kontrollerini otomatik olarak oluşturabilir.

Lint aracı, bir API'yi çağırmak için gereken minimum SDK Extensions sürümünün karşılanmadığı örnekleri işaretler.

SDK Uzantısı adları ve sabitleri

Aşağıdaki tabloda, API referans belgelerinde listelenen farklı SDK uzantısı gruplarının, uygulamanızın çalışma zamanında API kullanılabilirliğini kontrol etmek için kullanabileceği sabit değerlerle nasıl eşlendiği açıklanmaktadır. Her bir herkese açık SDK için SDK Uzantılarının genel grubu Build.VERSION_CODES değerleriyle eşlenir.

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 etme

Adb kullanan bir cihazda hangi SDK Uzantılarının kullanılabildiğini kontrol etmek için aşağıdaki komutu çalıştırın:

adb shell getprop | grep build.version.extensions

Komutu çalıştırdıktan sonra, aşağıdakine 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ır, cihazda mevcut bir SDK Uzantısı'nı ve karşılık gelen uzantı sürümlerini (bu örnekte 3) gösterir.