Google Play'deki hedef API seviyesi 36 şartı, Android 16'nın altındaki herhangi bir sürüm için derlenmiş bir yayının gönderilemeyeceği anlamına gelir. Ekim 2026 itibarıyla Play, daha düşük bir seviyeyi hedefleyen her yeni uygulamayı ve her güncellemeyi, çoğu zaman Target SDK of artifact is too low mesajıyla reddediyor. Politika uyarısı alan uygulamalar ek süre isteyebiliyordu, ancak uzatma 1 Kasım 2026'da sona eriyor. Bu rehber, uzatmanın size hâlâ ne kazandırdığını, Expo, Flutter ve React Native'i API 36'ya nasıl taşıyacağınızı ve geçişten sonra genellikle nelerin bozulduğunu anlatıyor.
Hedef API seviyesi 36 şartı tam olarak neyi engelliyor?
Gönderimleri engeller. 31 Ağustos 2026'dan beri, API 36'yı hedeflemediği sürece yeni bir telefon uygulaması veya güncelleme yükleyemezsiniz. Hâlihazırda yayında olan ve API 35 veya üzerini hedefleyen uygulamalar, yeni kullanıcılar dahil herkes için tamamen erişilebilir kalır.
Google'ın hedef API seviyesi şartlarına göre "Yeni uygulamaların ve uygulama güncellemelerinin Google Play'e gönderilebilmesi için Android 16'yı (API seviyesi 36) veya üzerini hedeflemesi gerekir." Şartlar cihaz türüne göre değişir ve tek tam istisna, tek bir kuruluş içinde dahili dağıtım için tasarlanmış kalıcı olarak özel uygulamalardır.
| Cihaz türü | Yeni uygulamalar ve güncellemeler (31 Ağustos 2026'dan itibaren) | Mevcut uygulamalar şu seviyeyi hedefliyorsa tamamen erişilebilir kalır |
|---|---|---|
| Telefon, tablet, Android Auto | API 36 | API 35 veya üzeri |
| Wear OS | API 35 | API 34 veya üzeri |
| Android Automotive OS | API 35 | API 32 veya üzeri |
| Android TV | API 34 | API 33 veya üzeri |
| Android XR | API 34 | API 34 veya üzeri |
Bu seviyelerin altında kalan mevcut bir uygulama "yalnızca, uygulamanızın hedef API seviyesiyle aynı veya daha düşük Android OS sürümünü çalıştıran cihazlarda kullanılabilir olacaktır." Uygulamayı zaten yüklemiş olan kişiler eskisi gibi kullanmaya devam eder. Ancak daha yeni bir telefona sahip biri, uygulamanın "Android'in eski bir sürümü için yapıldığı" uyarısını görür.
1 Kasım 2026'dan önce hâlâ uzatma alabilir misiniz?
Yalnızca Play uygulamanıza bir politika uyarısı gönderdiyse ve talep formu hâlâ görünüyorsa. O durumda bile uzatma en geç 1 Kasım 2026'ya kadar sürer; yani bu, yeni bir plan değil, neredeyse bitmiş bir düzeltme için birkaç günlük ek süredir.
Google, etkilenen uygulamalara "Bildirimler aracılığıyla bir uzatma talep formu bağlantısı" gönderdiğini ve formun "Politika durumu sayfasındaki uyarının veya sorunun ayrıntılar sayfasından erişilebilir" olduğunu belirtiyor. Google, zaten uyumlu olan uygulamalara form göstermez.
- Play Console'u açın ve uygulamayı seçin.
- Gelen Kutusu'nda veya Bildirimler'de hedef API seviyesi mesajını arayın. Oradaysa bağlantısını izleyin.
- Değilse Politika durumu'na gidin, hedef API seviyesi uyarısını veya sorununu açın ve ayrıntılar sayfasında uzatma talep formunu arayın.
- Etkilenen her uygulama için formu doldurun. Her uygulamanın kendi uyarısı vardır.
- Uzatma verilse de verilmese de 1 Kasım 2026'dan önce bir API 36 derlemesi yüklemeyi planlayın. Bu tarihten sonra güncellemeler için API 36 gerekir.
Expo, Flutter ve React Native API 36'ya nasıl yükseltilir?
En temiz yol, zaten API 36'yı hedefleyen bir framework sürümüne geçmektir: Expo SDK 54, React Native 0.81 veya Flutter 3.38. Henüz sürüm yükseltemiyorsanız sayıyı elle artırabilirsiniz, ancak bu durumda Android 16 davranış değişiklikleriyle de kendiniz ilgilenmeniz gerekir.
| Teknoloji | Varsayılan olarak API 36'yı hedeflediği sürüm | Sayının bulunduğu yer | Yükseltemiyorsanız manuel yol |
|---|---|---|---|
| Expo (managed / CNG) | SDK 54 (React Native 0.81) | Prebuild tarafından üretilir; expo-build-properties ile geçersiz kılın | expo-build-properties eklentisinde targetSdkVersion: 36 ve compileSdkVersion: 36 |
| React Native (bare) | 0.81 | android/build.gradle | compileSdk ve targetSdk değerlerini 36 yapın, ardından manifest'te predictive back'i devre dışı bırakın |
| Flutter | 3.38 (flutter.targetSdkVersion = 36) | android/app/build.gradle(.kts) | Sabit yazılmış 35 değerini 36 veya flutter.targetSdkVersion ile değiştirin |
Expo. SDK 54 değişiklik günlüğü, SDK 54 ve React Native 0.81'in "artık Android 16'yı hedeflediğini" söylüyor. npx expo install expo@^54.0.0 --fix ile yükseltin, npx expo-doctor@latest çalıştırın ve Continuous Native Generation kullanıyorsanız "android ve ios dizinlerini önceki bir SDK sürümü için oluşturduysanız silin." SDK 53'te expo-build-properties eklentisi üzerinden targetSdkVersion: 36 ayarlamayı deneyebilirsiniz, ancak React Native 0.79 geri tuşunu hâlâ onBackPressed üzerinden işler; bu yüzden yayınlamadan önce bir sonraki bölümü okuyun.
Flutter. Flutter 3.38 sürüm notları varsayılanları flutter.compileSdkVersion (API 36) ve flutter.targetSdkVersion (API 36) olarak listeliyor ve "derleme dosyalarınızda Flutter SDK'nın sağladığı API seviyesi değişkenlerini kullanmanızı şiddetle tavsiye ediyor." 3.38 sürümü ayrıca en az Java 17 gerektirir. Uygulama modülünüzde targetSdk = 35 sabit yazılmışsa Flutter yükseltmesi bunu değiştirmez, bu yüzden dosyayı kontrol edin.
Bare React Native. android/build.gradle içinde compileSdkVersion ve targetSdkVersion değerlerini 36 yapın. 0.81 ve sonrasında işin büyük kısmı tamamdır. Daha eski sürümlerde ayrıca AndroidManifest.xml içindeki <application> öğesine android:enableOnBackInvokedCallback="false" ekleyin. Bu olmadan donanım geri tuşu ve geri hareketi JavaScript gezinmenizi atlar.
Bir uygulama Android 16'yı hedeflemeye başladığında ne bozulur?
En sık bozulanlar geri gezinme ve büyük ekran düzenleridir. Hedef API 36 olduğunda Android onBackPressed çağırmayı bırakır, edge-to-edge'den çıkmanıza izin vermez ve en az 600dp genişliğindeki ekranlarda yön ve yeniden boyutlandırma kilitlerini yok sayar.
Google'ın Android 16 davranış değişikliklerinden çapraz platform uygulamalar için en önemli olanlar:
- Predictive back: "
onBackPressedçağrılmaz veKeyEvent.KEYCODE_BACKartık gönderilmez."android:enableOnBackInvokedCallback="false"ayarı geçici bir devre dışı bırakma yoludur. - Edge-to-edge:
windowOptOutEdgeToEdgeEnforcement"kullanımdan kaldırıldı ve devre dışı bırakıldı"; bu nedenle bir başlık veya alt düğme durum çubuğunun ya da hareket çubuğunun altında kalabilir. - Büyük ekranlar: 600dp ve daha geniş ekranlarda
screenOrientation,resizableActivityve en-boy oranı sınırları yok sayılır; bu da yalnızca dikey düzenleri esnetebilir. Oyunlar muaftır.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY, "API seviyesi 37 hedeflendiğinde geçerli olmayacak" geçici bir devre dışı bırakma yoludur. - Metin:
elegantTextHeightyok sayılır; bu, Arapça, Tayca, Tamilce ve diğer bazı yazı sistemlerinde satır yüksekliğini değiştirebilir. - Sağlık sensörleri:
BODY_SENSORS,READ_HEART_RATEgibi ayrıntılı sağlık izinleriyle değiştirilmiştir.
Diğer geliştiriciler API 36'ya geçerken neyle karşılaştı?
Şimdiye kadarki herkese açık raporlar iki tür sorun gösteriyor: hiçbir hata vermeden değişen geri tuşu davranışı ve Play'in aldığı paketin hedef seviyesini proje dosyalarının söylediğinden farklı hâle getiren kütüphaneler.
Audius (React Native 0.79). #14635 numaralı pull request'te Audius ekibi, Google Play'in Android 1.5.186 sürümünün iki yüklemesini de Target SDK of artifact is too low ile reddettiğini söylüyor. compileSdk ve targetSdk değerlerini 35'ten 36'ya çıkardılar, build tools'u 36.0.0 yaptılar ve "RN 0.79 AGP 8.8'e sabitlendiği" için android.suppressUnsupportedCompileSdk=36 eklediler. Ayrıca enableOnBackInvokedCallback="false" ayarladılar, çünkü bu olmadan geri tuşu "React Navigation'ı atlayacaktı." Daha sonraki bir PR, kendi OnBackPressedCallback'ini kaydeden React Native 0.81'e geçtikten sonra bu devre dışı bırakmayı kaldırdı.
Bir Flutter 3.35.2 uygulaması. Flutter #174516 numaralı sorunda bir geliştirici Gradle'da ve manifest'te targetSdk 36 ayarladı, ancak Play Console yine de "Paketiniz SDK 34'ü hedefliyor, ancak bu sürümle kullanılamayan bir Play Core kütüphanesi kullanıyor" uyarısını verdi. Eski com.google.android.play:core:1.10.3 kütüphanesini kaldırmak R8 "Missing classes" hatalarına yol açtı. Bunları düzeltmek de "Bu sürümü yayınlayamazsınız, çünkü mevcut kullanıcıların yeni eklenen uygulama paketlerine yükseltme yapmasına izin vermiyor" hatasını getirdi. Paket sonunda ProGuard keep kuralları eklendikten, minSdk açıkça ayarlandıktan ve dil, yoğunluk ve ABI bölmeleri kapatıldıktan sonra kabul edildi; bunun bedeli daha büyük bir indirme boyutu oldu.
Ortak ders: Gradle'daki sayıyı değiştirmek işi bitirmez. Audius çalışma zamanı davranışını düzeltmek zorunda kaldı, Flutter geliştiricisi ise Play'in paketten okuduğu değeri değiştiren bir bağımlılığı düzeltmek zorunda kaldı. Yalnızca yapılandırma dosyasını değil, derlenmiş çıktıyı kontrol edin ve bir Android 16 cihazında test edin.
Bir API 36 derlemesini yüklemeden önce nasıl kontrol edersiniz?
Hedef seviyeyi doğrudan yayın paketinden okuyun, ardından paketi dahili veya kapalı test kanalına koyun ve Android 16'da geri gezinmeyi, iç boşlukları (insets) ve bir tablet düzenini deneyin. Bir ret veya üretimdeki bir hata, bu kontrollerden çok daha fazla zamana mal olur.
Örnek: API 35'i hedefleyen ve bir güncellemeye daha ihtiyaç duyan bir Expo SDK 53 uygulaması.
npx expo install expo@^54.0.0 --fix, ardındannpx expo-doctor@latestçalıştırın ve raporladığı her şeyi düzeltin.- Proje Continuous Native Generation kullanıyorsa eski
androidveiosklasörlerini silin ve yeniden derleyin. Kullanmıyorsa native yükseltme değişikliklerini elle uygulayın. - Yayın AAB dosyasını derleyin, örneğin
eas build -p android --profile productionile. - Hedefi
bundletool dump manifest --bundle app.aab --xpath /manifest/uses-sdk/@android:targetSdkVersionile doğrulayın. Çıktı36olmalıdır. - Dahili teste yükleyin. Bir Android 16 telefonda her iç içe ekranda geri tuşuna basın, başlıkların ve alt düğmelerin sistem çubuklarının altında kalmadığını kontrol edin ve bir tableti veya yeniden boyutlandırılabilir bir emülatörü döndürün.
- Android 16 düzeltmelerinden bahseden sürüm notlarıyla üretime yükseltin.
Testi hızlandırmak için Google Play kapalı test rehberimizdeki test kullanıcısı kurulumunu kullanın ve güncelleme metni için sürüm notu örneklerimizden ifadeler ödünç alın. Yayını başkasına devretmeyi tercih ederseniz, App Store gönderim hizmetimiz her iki mağaza için $599 karşılığında Play Console ve App Store Connect'i kapsar. Geliştirici hesabı ücretleri ayrıdır.
Sıkça sorulan sorular
1 Kasım 2026 hedef API uzatmasını kaçırırsam ne olur?
Mevcut mağaza kaydınız yayında kalır. API 35 veya üzerini hedefleyen bir telefon uygulaması mevcut ve yeni kullanıcılar için erişilebilir olmaya devam eder. Play Console, paket Android 16'yı (API 36) hedefleyene kadar acil hata düzeltmeleri dahil her yeni sürümü reddeder. API 35'in altındaki uygulamalar yalnızca o Android sürümünü veya daha eskisini çalıştıran cihazlara yüklenebilir.
Wear OS ve Android TV uygulamalarının API 36'yı hedeflemesi gerekiyor mu?
Hayır. Ekim 2026 itibarıyla yeni Wear OS ve Android Automotive OS uygulamaları ve güncellemeleri API 35'i, Android TV ve Android XR uygulamaları ise API 34'ü hedeflemelidir. Yalnızca telefon, tablet ve Android Auto uygulamaları için API 36 gerekir. Tek tam istisna, tek bir kuruluş içinde dağıtılan kalıcı olarak özel bir uygulamadır.
Expo SDK'mı yükseltmeden API 36'yı hedefleyebilir miyim?
SDK 53'te expo-build-properties eklentisinde targetSdkVersion ve compileSdkVersion değerlerini 36 olarak ayarlayabilirsiniz ve bazı geliştiriciler bunu yaptı. SDK 53'ün kullandığı React Native 0.79, geri tuşu basımlarını hâlâ onBackPressed üzerinden gönderir ve Android 16, API 36'da bunu artık çağırmaz. enableOnBackInvokedCallback değerini false yaparak bu davranışı devre dışı bırakmanız gerekir. Desteklenen yol SDK 54'e yükseltmektir.
compileSdkVersion ile targetSdkVersion arasındaki fark nedir?
compileSdkVersion, kodunuzun derlendiği Android API sürümüdür. targetSdkVersion ise Android'e uygulamanızın hangi sürümün davranışını benimsediğini söyler ve Google Play bunu zorunlu kılar. compileSdk, targetSdk ile aynı veya daha yüksek olmalıdır; dolayısıyla hedefi 36'ya taşımak API 36 veya üzerine karşı derlemek anlamına gelir. Örneğin Expo SDK 58, 37'ye karşı derler ve 36'yı hedefler.
build.gradle'ı değiştirdikten sonra Play Console neden hâlâ uygulamamın eski bir API seviyesini hedeflediğini söylüyor?
Play hedef seviyeyi kaynak dosyalarınızdan değil, yüklediğiniz paketten okur. Başka bir modüldeki sabit yazılmış bir değer, güncel olmayan bir eklenti veya eski Play Core gibi bir kütüphane birleştirilmiş manifest'i değiştirebilir. Gerçek targetSdkVersion değerini görmek için yayın AAB dosyasında bundletool dump manifest çalıştırın ve eski bir çıktı yerine yeni derlemeyi yüklediğinizden emin olun.
Kaynaklar ve ek okumalar
Politikalar değişir. Göndermeden önce resmi dokümantasyonu kontrol edin.
- Google Play uygulamaları için hedef API seviyesi şartları (Play Console Yardım) ↗30 Eki 2026 tarihinde kontrol edildi
- Davranış değişiklikleri: Android 16 veya üzerini hedefleyen uygulamalar (Android Developers) ↗30 Eki 2026 tarihinde kontrol edildi
- Expo SDK 54 değişiklik günlüğü ↗30 Eki 2026 tarihinde kontrol edildi
- Flutter 3.38'deki yenilikler ↗30 Eki 2026 tarihinde kontrol edildi
- fix(mobile): Android SDK 36'yı hedefleme, AudiusProject/apps PR #14635 ↗30 Eki 2026 tarihinde kontrol edildi
- Flutter 3.35.2, açık geçersiz kılmalara rağmen SDK 34'ü zorluyor, flutter/flutter sorun #174516 ↗30 Eki 2026 tarihinde kontrol edildi
Uygulamanızı bitiş çizgisinden geçirelim.
Uygulamanızla yayındaki mağaza sayfası arasında ne olduğunu netleştirmek için odaklı bir görüşme.
Görüşme planlayın ↗

