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:
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:
- 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.
- Özellik grubunuz için gerekli uzantı sürümünü belirledikten sonra Android Studio'da SDK Yöneticisi'ni açın.
- İ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.
Bu değerleri uygulamanızın
build.gradle.kts
veyabuild.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.
![](https://developer.android.com/static/images/guide/sdk-extensions/extensions-lint-check.png?authuser=5&hl=tr)
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.