Android SDK Platform, işletim sisteminin belirli bir sürümü için bir dizi kitaplık, sistem görüntüsü ve araçtır. Her platform kendi API Level'ine bağlıdır ve Android API sınıflarını içeren android.jar, çalışma zamanı bileşenleri ve bir öykünücü içerir. Google Developer Documentation, 2026'ya göre, geliştiriciler hedef OS sürümüne karşı kod derlemek için SDK Platform'u kullanır. Yüklü bir platform olmadan, bir APK oluşturmak veya uygulamayı öykünücüde çalıştırmak imkansızdır. SDK Manager bu bileşenlerin indirilmesini, güncellenmesini ve kaldırılmasını yönetir.
Önemli Noktalar
SDK Platform, Android SDK'nın temel bir bileşenidir ve belirli bir Android sürümü için uygulama geliştirmek üzere eksiksiz bir kitaplık ve araç seti sunar. Her platform, yeni OS sürümleriyle artan bir tam sayı olan API Level ile tanımlanır. Örneğin, Android 13 API Level 33'e, Android 14 API Level 34'e, Android 15 API Level 35'e karşılık gelir.
Android Studio'dan (IDE) farklı olarak, SDK Platform bir kod düzenleyici veya hata ayıklayıcı içermez. Derleyiciye ve derleme sistemine bağlanan bir sistem katmanıdır. Bir geliştirici import android.app.Activity yazdığında, derleyici bu sınıfı belirli bir SDK Platform'un android.jar'ından alır. Gerekli API Level'ine sahip yüklü bir platform olmadan kod derlenmez.
Google, her kararlı Android sürümü için yeni bir SDK Platform yayınlar. Tarih, Android 1.0 (API 1)'den Android 15 (API 35)'e kadar 35'ten fazla API Level içerir. Her platform geriye dönük uyumludur: API Level 21 için yazılan kod API Level 35'te çalışır, ancak tersi geçerli değildir.
Android hızla gelişir: her sürüm yeni API'ler ekler, mevcutların davranışını değiştirir ve kısıtlamalar getirir. Örneğin, Android 10 (API 29) Scoped Storage'ı, Android 12 (API 31) SplashScreen API'yi, Android 14 (API 34) zorunlu BroadcastReceiver bayraklarını getirdi. Geliştirici, bu yetenekleri kullanmak için uygulamayı mevcut platforma karşı derlemelidir.
Aynı zamanda, uygulama eski OS sürümlerinde çalışabilir. Bunun için Gradle'da minSdk (uygulamanın çalıştığı minimum API Level) belirtilir. Kod, sürüm kontrolleri ve koşullu API çağrıları kullanır. Bu yaklaşım, yeni özellikleri kaybetmeden uyumluluk sağlar.
| Android Sürümü | API Level | Kod Adı | Yayın Yılı |
|---|---|---|---|
| Android 12 | 31 | Snow Cone | 2021 |
| Android 13 | 33 | Tiramisu | 2022 |
| Android 14 | 34 | Upside Down Cake | 2023 |
| Android 15 | 35 | Vanilla Ice Cream | 2024 |
SDK Platform tek bir dosya değil, birlikte uygulamanın derlenmesini, oluşturulmasını ve test edilmesini sağlayan bir bileşen setidir. Ana öğe android.jar — bu sürüme dahil edilen Android API sınıflarını içeren bir arşivdir. Bu dosya Kotlin veya Java derleyicisine bağlanır ve geliştiricinin kullanabileceği sınıfları, yöntemleri ve ek açıklamaları belirler.
Her SDK Platform, Android Virtual Device öykünücüsü için bir System Image (işletim sistemi görüntüsü) içerir. İlgili görüntü olmadan, öykünücü gerekli API Level'ine sahip bir sanal cihazı başlatamaz. System Images farklı türlerde gelir: Google APIs (Google hizmetleriyle birlikte), Google Play (Play Store ile) ve AOSP (Google hizmetleri olmadan saf Android).
SDK Platform, bu API Level için optimize edilmiş bir Build-Tools ve Platform-Tools sürümü içerir. Build-Tools, aapt2 (Android Asset Packaging Tool), dx/d8 (Dalvik/ART derleyicisi) ve ApkSigner içerir. Platform-Tools, ADB (Android Debug Bridge), fastboot ve SQLite sağlar. Bu araçlar, SDK Manager aracılığıyla SDK Platform'dan bağımsız olarak güncellenir.
Her platform, standart Android kaynaklarını (sistem temaları, stiller, animasyonlar, renkler ve boyutlar) içerir. Bu kaynaklar derleme sırasında kullanılır: bir geliştirici @android:style/Theme.Material.Light referansı verirse, derleme sistemi tanımı SDK Platform kaynaklarından alır. Bu, tüm cihazlarda sistem bileşenlerinin tutarlı bir görünümünü garanti eder.
| Bileşen | Açıklama | Boyut (yaklaşık) |
|---|---|---|
| android.jar | Derleme için Android API kitaplıkları | 50–120 MB |
| System Image | Öykünücü için OS görüntüsü | 600–1500 MB |
| Build-Tools | APK ve AAB derleme araçları | 200–400 MB |
| Platform Resources | Sistem kaynakları (temalar, stiller) | 30–80 MB |
| Skins | Öykünücü için cihaz profilleri | 10–50 MB |
API Level, Android SDK sürümünün tam sayı tanımlayıcısıdır. Her Android sürümü, tek yönlü olarak artan bir API Level'e karşılık gelir. Geliştirici, API Level'i build.gradle'daki üç ana parametrede belirtir: compileSdk, minSdk ve targetSdk. Bu parametrelerin seçimi, hangi API'lerin kullanılabilir olduğunu ve sistemin uygulamayı nasıl işlediğini belirler.
Google, minSdk'nin mevcut dağıtım eşiğinden düşük olmamasını önerir — Android Studio Distribution Dashboard (2026)'a göre, cihazların yaklaşık %95'i Android 8.0 (API 26) ve üzerinde çalışmaktadır. compileSdk en son kararlı sürüm olmalıdır — bu, yeni API'lere erişim sağlar ve lint kontrollerinin eski yöntemleri tespit etmesine izin verir.
Her yeni API Level ile Google önemli değişiklikler getirir. Android 6.0 (API 23), çalışma zamanı izinlerini ekledi — uygulama, kurulum sırasında değil, çalıştırma sırasında izin ister. Android 8.0 (API 26), otomatik doldurma formlarını ve bildirim kanallarını tanıttı. Android 12 (API 31), intent'lere yaklaşımı kökten değiştirdi — SplashScreen API ve exported özniteliği aracılığıyla bileşen dışa aktarma geldi. Android 14 (API 34), BroadcastReceiver için bayrak belirtmeyi zorunlu hale getirdi ve ön plan hizmetlerine katı kısıtlamalar getirdi.
API Level'lerin tarihini anlamak, geliştiricinin doğru uyumluluk stratejisini seçmesine yardımcı olur. Uygulama compileSdk 35 kullanıyor ancak minSdk 26 ise, kod Build.VERSION.SDK_INT aracılığıyla sürüm kontrolünden sonra yalnızca API 35 yöntemlerini çağırabilir. Bu yaklaşıma sürüm kontrollü geliştirme denir ve bir endüstri standardıdır.
| Android | API | Yıl | Önemli Yenilik |
|---|---|---|---|
| 6.0 Marshmallow | 23 | 2015 | Çalışma zamanı izinleri |
| 8.0 Oreo | 26 | 2017 | Bildirim kanalları, Otomatik doldurma |
| 10 | 29 | 2019 | Scoped Storage, Koyu tema |
| 12 | 31 | 2021 | SplashScreen, exported özniteliği |
| 14 | 34 | 2023 | Broadcast bayrakları, Ön plan hizmetleri |
SDK Manager, Android SDK bileşenlerini yönetmek için bir araçtır: yeni SDK Platform yükleme, mevcut olanları güncelleme ve eskilerini kaldırma. SDK Manager, Android Studio'da grafik arayüz olarak ve sdkmanager aracılığıyla komut satırı aracı olarak kullanılabilir. SDK Manager'ın komut satırı, grafik arayüzü olmayan CI/CD boru hatlarında kullanım için uygundur.
SDK Manager, platformları Android SDK dizinine yükler. Varsayılan olarak Linux ve macOS'ta $HOME/Android/Sdk, Windows'ta %LOCALAPPDATA%\Android\Sdk konumundadır. platforms dizini içinde android-{API Level} adlı klasörler bulunur ve her biri eksiksiz SDK Platform'u içerir.
sdkmanager komutu, "platforms;android-{API}" biçiminde bir paket tanımlayıcısı kabul eder. Örneğin, SDK Platform 35'i yüklemek için komut şöyledir:
# API Level 35 için SDK Platform'u yükle
sdkmanager "platforms;android-35"
# Tek komutla birden fazla platform yükle
sdkmanager "platforms;android-34" "platforms;android-33" "platforms;android-31"
# Yüklü platformları listele
sdkmanager --list_installed | grep platforms
# Eski platformu kaldır
sdkmanager --uninstall "platforms;android-28"
Modern Android projeleri, ilk derlemede otomatik olarak SDK Platform'u yükleyebilen Gradle Plugin'i kullanır. Bunu yapmak için build.gradle'da compileSdk belirtilmeli ve yerel yapılandırmaya SDK dizini eklenmelidir. Android Studio ayrıca bir proje açarken eksik platformu yüklemeyi önerir — Gradle senkronizasyon penceresindeki "Install SDK Platform" düğmesine tıklamanız yeterlidir.
SDK Manager aracılığıyla SDK Platform'u düzenli olarak güncellemek önemlidir — platformla birlikte Build-Tools ve Platform-Tools da güncellenir, bu da derleme performansını ve hata ayıklama kararlılığını etkiler. Google, özellikle Google Play'de yeni bir uygulama sürümü yayınlamadan önce her 2-3 haftada bir SDK güncellemelerini kontrol etmeyi önerir.
Öykünücüyü belirli bir API Level ile çalıştırmak için aynı sürümün System Image'ini yüklemek gerekir. SDK Manager, farklı mimarilerin (x86_64, arm64-v8a) ve türlerin (Google APIs, Google Play, AOSP) görüntülerini indirmeye izin verir. Görüntü indirildikten sonra AVD Manager, buna dayalı bir sanal cihaz oluşturur.
# API 35 için Google APIs ile System Image yükle
sdkmanager "system-images;android-35;google_apis;x86_64"
# Komut satırı üzerinden AVD oluştur
avdmanager create avd -n pixel8 -k "system-images;android-35;google_apis;x86_64"
# Oluşturulan AVD'leri listele
avdmanager list avd
build.gradle'daki üç parametre, uygulamanın SDK Platform ile nasıl çalıştığını tanımlar. compileSdk, derleme için kullanılan API Level'dir. Bu parametre, kodda hangi Android API sınıflarının kullanılabileceğini belirtir. compileSdk, üçü arasında en yeni olmalıdır ve çalışma zamanı davranışını etkilemez — uygulama derlenir ancak yalnızca cihazda bulunan API'leri kullanır.
minSdk, uygulamanın yüklenebileceği minimum API Level'dir. Google Play, minSdk'den düşük sürüme sahip bir cihaza uygulamanın yüklenmesine izin vermez. Bu parametre, uyumluluk eşiğini tanımlar ve kitle kapsamını etkiler. minSdk ne kadar düşükse, o kadar fazla cihaz desteklenir, ancak kontroller olmadan o kadar az yeni API kullanılabilir.
targetSdk, uygulamanın test edildiği API Level'dir. Android sistemi, davranış değişikliklerini uygulamak için targetSdk kullanır: uygulama yeni bir API Level'e güncellenmezse, sistem eski sürümler için uyumluluk modunu etkinleştirir. Google Play, targetSdk'nin belirli bir seviyeden düşük olmamasını gerektirir — 2026 itibarıyla bu API 34'tür (Android 14).
android {
compileSdk 35
defaultConfig {
applicationId "com.example.app"
minSdk 26
targetSdk 35
versionCode 1
versionName "1.0"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
}
// Android SDK sürümü SDK Manager aracılığıyla yüklenmelidir
// sdkmanager "platforms;android-35"
Seçim stratejisi proje hedeflerine bağlıdır. Yeni bir uygulama için: compileSdk — en son kararlı (2026 başında 35), minSdk — API 26 (Android 8.0, cihazların %95'ini kapsar), targetSdk — en son kararlı. Mevcut bir uygulamayı güncellemek için: compileSdk hemen yükseltilmeli, targetSdk — tüm davranış değişiklikleri test edildikten sonra, minSdk — yalnızca eski cihazlar için desteğin bırakılması gerektiğinde.
Google, yeni bir Android sürümünün yayınlanmasından sonraki bir yıl içinde targetSdk'nin güncellenmesini gerektirir. Bu gereksinimi karşılamayan uygulamalar Google Play'de güncelleme yayınlayamaz. Son tarihleri takip etmek için resmi Android OS güncelleme takvimini kullanın.
| Parametre | Amaç | Öneri |
|---|---|---|
| compileSdk | Derleme için API sürümü | En son kararlı |
| minSdk | Desteklenen minimum sürüm | %95 kapsama için API 26 |
| targetSdk | Davranış değişiklikleri için sürüm | En son kararlı + test |
Farklı Android sürümleri için geliştirme yaparken, API kullanılabilirliğini dikkate almak gerekir. Uygulama compileSdk 35 kullanıyor ancak API 31 olan bir cihazda çalışıyorsa, API 34'te eklenen yöntemleri çağırmak NoSuchMethodError veya AbstractMethodError ile sonuçlanır. Yeni API'leri güvenli bir şekilde çağırmak için Build.VERSION.SDK_INT aracılığıyla sürüm kontrolleri kullanılır.
class FeatureChecker {
fun registerNotificationChannel(context: Context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// Bildirim kanalları API 26'dan itibaren kullanılabilir
val channel = NotificationChannel(
"updates",
"Güncellemeler",
NotificationManager.IMPORTANCE_DEFAULT
)
val manager = context.getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
}
}
}
Yalnızca belirli sürümlerde çağrılan yöntemler için @RequiresApi ek açıklamasını kullanın. Bu, lint kontrollerine yöntemin güvenli olduğunu bildirir ve uyarıları devre dışı bırakır. SDK_INT kontrolü ile birleştirildiğinde, ek açıklama kodu daha temiz ve inceleyenler için daha anlaşılır hale getirir.
@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
fun scheduleExactAlarm(manager: AlarmManager, time: Long) {
// API 34: SCHEDULE_EXACT_ALARM bayrağıyla scheduleExact
if (manager.canScheduleExactAlarms()) {
manager.setExact(AlarmManager.RTC_WAKEUP, time, pendingIntent)
} else {
// SCHEDULE_EXACT_ALARM iznini iste
val intent = Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM)
context.startActivity(intent)
}
}
fun safeScheduleAlarm(context: Context, triggerTime: Long) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
scheduleExactAlarm(getAlarmManager(context), triggerTime)
} else {
// İzin kontrolü olmadan eski setExact yöntemi
getAlarmManager(context).setExact(AlarmManager.RTC_WAKEUP, triggerTime, pendingIntent)
}
}
Bazen geliştiricinin cihazında veya CI'da hangi SDK Platform sürümünün yüklü olduğunu bilmek gerekir. Bu, ADB aracılığıyla veya programlı olarak uygulama kodunda yapılabilir. Cihazın API Level'ini bilmek, sürüme özgü davranışları test ederken yardımcı olur.
fun logDeviceInfo() {
with (Build.VERSION) {
Log.d("SDK_Demo", "SDK_INT: $SDK_INT")
Log.d("SDK_Demo", "RELEASE: $RELEASE")
Log.d("SDK_Demo", "CODENAME: $CODENAME")
Log.d("SDK_Demo", "PREVIEW_SDK_INT: $PREVIEW_SDK_INT")
}
// Çıktı: SDK_INT: 35, RELEASE: 15, CODENAME: REL
}
Sıkça Sorulan Sorular
Android Studio bir IDE'dir, SDK Platform ise derleme için bir kitaplık ve araç setidir. Studio, uygulamaları oluşturmak için SDK Platform'u kullanır, ancak platformlar SDK Manager aracılığıyla ayrı olarak indirilir ve Studio sürümünden bağımsız olarak güncellenebilir.
Genellikle üç sürüm yeterlidir: en son (compileSdk), minimum (minSdk) ve test için bir ara sürüm. SDK Manager, gerektiğinde platformları kolayca eklemeye ve kaldırmaya izin verir. Geliştiriciler ortalama olarak çalışma makinelerinde 3-5 platform bulundurur.
Hayır. Her SDK Platform yalnızca kendi sürümünün API'sini içerir. API 35'teki yöntemleri çağırmak için android-35 platformuna ihtiyacınız vardır. Eski bir platform yüklüyken yeni bir compileSdk belirtmek derleme hatasına neden olur.
Google, her sürüm için SDK Platform güncellemeleri yayınlar: hata düzeltmeleri, yeni API'ler, performans iyileştirmeleri. SDK Manager mevcut güncellemeler hakkında bildirimde bulunur. Kararlı derlemeler için platformun en son sürümünün yüklenmesi önerilir.
Varsayılan olarak, her SDK Platform Android/Sdk/platforms/android-{API} dizininde 200-800 MB yer kaplar. Klasörün içinde android.jar, kaynakları içeren bir data klasörü ve öykünücü ile derleme sistemi için yapılandırma dosyaları bulunur.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun