SDK Uzantıları

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

API Sürümü Oluşturma

Android 11'den (API düzeyi 30) itibaren Android cihazlarda bir dizi SDK uzantısı bulunur. Yeni API'ler eklendiğinde 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'si Android 13'te (API düzeyi 33) herkese açık SDK'ya eklenmiş ancak R Uzantıları Sürüm 2'den itibaren SDK uzantıları aracılığıyla da kullanılabilir. SDK uzantı adları, bir tam sayı sabitine karşılık gelir. Bu sabit, Build.VERSION_CODES içindeki bir sabit veya SdkExtensions sınıfında tanımlanan bir sabit (ör. SdkExtensions.AD_SERVICES) olabilir.

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

SDK Uzantısı API'lerini kullanabilmek için öncelikle 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ında, uygulamanızın bir API'ye erişmek için kullanabileceği en eski SDK uzantısı sürümü belirtilir. Dokümanlarda bir Android platform sürümü (API düzeyiyle referans verilir) de belirtiliyorsa bu API, Android'in söz konusu sürümünü veya sonraki sürümlerini çalıştıran tüm cihazlarda da kullanılabilir.

Örneğin, ACTION_PICK_IMAGES, Android 13 (API düzeyi 33) sürümünden itibaren genel olarak herkese açık SDK'da kullanılabilir. Ayrıca, cihazda en az R Uzantıları Sürüm 2 olduğu sürece Android 11 (API düzeyi 30) sürümüne kadar olan cihazlarda da kullanılabilir:

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

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

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

  1. Kullanmak istediğiniz API'lerin özellik dokümanlarını ve API referansını kontrol ederek ihtiyacınız olan minimum uzantı sürümünü bulun.
  2. Özellik setiniz için gerekli uzantı sürümünü belirledikten sonra Android Studio'da SDK Manager'ı açın.
  3. İlgili uzantı sürümüne (veya API'ler ekleyici olduğundan daha yüksek bir sürüme) sahip Android SDK Platform girişini seçin. Örneğin: Android SDK Platform 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 kullanılabildiğini kontrol edebilir. Geliştirme sırasında ise aşağıdaki bölümlerde açıklandığı gibi Android Debug Bridge (adb) komutlarını kullanarak uzantı sürümlerini arayabilirsiniz.

Çalışma zamanında kontrol etme

Uygulamanız, getExtensionVersion() yöntemini kullanarak belirli bir platform sürümünde SDK uzantılarının kullanılabilir olup olmadığını çalışma zamanında 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 daha yenisinin 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 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çerlidir ancak uzantı API'si kullanılabilir olsa bile isPhotoPickerAvailable bazı cihazlarda yanlış değerini döndürür. Bu nedenle, SDK_INT kontrolü ideal değildir ve API kullanılabilirliğini kontrol etmek için uzantı sürümü kontrolü daha iyi bir yöntemdir. SDK_INT 33'den büyük veya eşit (Android 13 ya da sonraki sürümler) tüm cihazlarda fotoğraf seçici API'leri herkese açık SDK'da bulunur. Ancak SDK_INT 33'ten küçük (ör. Android 11, 12 ve 12L) olan ve en az 2 R uzantılı sürümü varsa API'lere erişebilen cihazlar da vardır.

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 cihazda belirli SDK uzantılarını kontrol etmek için kullanabileceğiniz tüm sabitlerin listesini görmek istiyorsanız SDK uzantı adları ve sabitleri başlıklı makaleyi inceleyin.

Reklam Hizmetleri Uzantıları

Genel SDK uzantıları grubuna benzer şekilde, AdServices API referansı bazen bir API'nin "Ad Services Extensions" sürümünün parçası olduğunu gösterir. Genel SDK uzantılarından farklı olarak, Ad Services Extensions, bir cihazda hangi sürümün olduğ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şlayacağınız hakkında daha fazla bilgi edinmek için Reklam Hizmetleri Uzantıları dokümanlarını inceleyin.

Yardımcı yöntemler

Bazı durumlarda, SDK uzantılarında SDK uzantısı API'lerinin kullanılabilirliğini kontrol etmek için Jetpack yardımcı yöntemleri bulunur. Örneğin, koşullu sürüm kontrollerini soyutlayan PhotoPicker kullanılabilirliğini kontrol etmek için Jetpack kitaplığı işlevini kullanabilirsiniz.

Araç desteği

Android Studio Flamingo | 2022.2.1 veya sonraki sürümlerde lint aracı, NewAPI kontrolünün bir parçası olarak SDK uzantısı sürümleriyle ilgili sorunları tarayabilir. Ayrıca 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 uzantıları sürümünün karşılanmadığı durumları işaretler.

SDK uzantı adları ve sabitleri

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

SDK uzantısının 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
U Uzantıları VERSION_CODES.UPSIDE_DOWN_CAKE Android 14 (API düzeyi 34) ve sonraki sürümler
V Uzantıları VERSION_CODES.VANILLA_ICE_CREAM Android 15 (API düzeyi 35) ve sonraki sürümler
B Uzantıları VERSION_CODES.BAKLAVA Android 16 (API düzeyi 36) ve sonraki sürümler
C Uzantıları VERSION_CODES.CINNAMON_BUN Android 17 (API düzeyi 37) 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 kullanarak 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ırda, cihazda bulunan bir SDK uzantısı ve ilgili uzantı sürümü (bu örnekte 3) gösterilir.