Bir APK yüklediğinizde, APK'nın Google Play'in hedef API düzeyi şartlarını karşılaması gerekir.
31 Ağustos 2023'ten itibaren:
Yeni uygulamalar, Android 13 (API düzeyi 33) veya sonraki sürümleri hedeflemelidir. Wear OS uygulamaları, Android 11 (API düzeyi 30) ile Android 13 (API düzeyi 33) arasındaki sürümleri hedeflemesi gereken uygulamalar hariçtir.
Uygulama güncellemeleri Android 13 veya sonraki sürümleri hedeflemeli ve Android 13'te davranış değişikliklerine göre düzenleme yapmalıdır. Ancak Android 11'i hedeflemesi gereken Wear OS uygulamaları hariçtir.
Belirli bir kuruluştaki kullanıcılarla sınırlı olan ve yalnızca şirket içi dağıtım için tasarlanmış kalıcı olarak özel uygulamaların hedef API düzeyi şartlarını karşılaması gerekmez.
Neden yeni SDK'ları hedeflemelisiniz?
Her yeni Android sürümü, güvenlik ve performans iyileştirmeleri sağlayan ve Android kullanıcı deneyimini geliştiren değişiklikler sunar. Bu değişikliklerden bazıları yalnızca targetSdkVersion
manifest özelliği (hedef API düzeyi olarak da bilinir) ile açıkça destek veren uygulamalar için geçerlidir.
Uygulamanızın yeni bir API düzeyini hedefleyecek şekilde yapılandırılması, kullanıcıların bu iyileştirmelerden yararlanmasını sağlar. Aynı zamanda, uygulamanız eski Android sürümlerinde çalışmaya devam edebilir. Yeni bir API seviyesini hedeflemek, aynı zamanda uygulamanızın platformun en son özelliklerinden yararlanmasına olanak tanır. Bu da kullanıcılarınızı memnun edecektir. Ayrıca Android 10'dan (API düzeyi 29) itibaren, uygulama Android 5.1 (API düzeyi 22) veya önceki sürümleri hedefliyorsa kullanıcılar bir uygulamayı ilk kez başlatırken bir uyarı görürler.
Bu dokümanda, Google Play gereksinimini karşılamak için hedef API seviyenizi güncellerken bilmeniz gereken önemli noktalar vurgulanmaktadır. Taşıma işlemi yaptığınız sürüme bağlı olarak aşağıdaki bölümlerde verilen talimatları inceleyin.
Android 12'den (API düzeyi 31) Android 13'e (API düzeyi 33) geçiş
Uygulamanızı Android 13'ü hedefleyecek şekilde güncellemek için davranış değişiklikleri listesini uygulayın.
Android 11'den (API düzeyi 30) Android 12'ye (API düzeyi 31) geçiş
Güvenlik ve İzinler
- Bluetooth:
BLUETOOTH
veBLUETOOTH_ADMIN
izinleri ile ilgili beyanlarıBLUETOOTH_SCAN
,BLUETOOTH_ADVERTISE
veyaBLUETOOTH_CONNECT
izinleriyle değiştirmeniz gerekir. Artık Bluetooth işlemleri içinLOCATION
çalışma zamanında istenen izin isteği yapmanız gerekmiyor. - Konum: Kullanıcılar uygulamaların yalnızca yaklaşık konum bilgilerini almasını isteyebilir.
ACCESS_FINE_LOCATION
için istekte bulunduğunuzdaACCESS_COARSE_LOCATION
iznini istemeniz gerekir.- Amaç filtreleri: Uygulamanız, amaç filtreleri kullanan etkinlikler, hizmetler veya yayın alıcıları içeriyorsa bu bileşenler için android:exported özelliğini açıkça tanımlamanız gerekir.
- Hazırda bekleme: Belirli bir süre kullanılmayan uygulamalar hazırda bekleme moduna alınabilir. Hazırda bekleme modundayken uygulamanızın çalışma zamanı izinleri ve önbelleği sıfırlanır. Ayrıca iş veya uyarı çalıştıramazsınız. Uygulamanızın hazırda bekleme durumunu kontrol edebilirsiniz.
- Bekleyen intent değişkenliği: Uygulamanızın oluşturduğu her PendingIntent nesnesinin değişkenliğini belirtmeniz gerekir.
Kullanıcı Deneyimi
- Özel bildirimler: Özel içerik görünümleri içeren bildirimler artık tüm bildirim alanını kullanmayacaktır; bunun yerine sistem standart bir şablon uygular. Bu şablon, özel bildirimlerin tüm eyaletlerdeki diğer bildirimlerle aynı süslemeye sahip olmasını sağlar. Bu davranış,
Notification.DecoratedCustomViewStyle
özelliğinin davranışıyla neredeyse aynıdır. - Android Uygulama Bağlantıları doğrulamasında değişiklikler: Android Uygulama Bağlantısı doğrulamasını kullanırken amaç filtrelerinizin BROWSABLE kategorisini içerdiğinden ve HTTPS şemasını desteklediğinden emin olun.
Performans
Ön plan hizmetini başlatma kısıtlamaları: Android 12 veya sonraki sürümleri hedeflemek için uygulamanız birkaç özel durum dışında arka planda çalışırken ön plan hizmetlerini başlatamaz. Bir uygulama arka planda çalışırken bir ön plan hizmeti başlatmaya çalışırsa bir istisna oluşur (birkaç özel durum hariç).
Uygulamanız arka planda çalışırken hızlandırılmış işleri planlamak ve başlatmak için WorkManager'ı kullanabilirsiniz. Kullanıcının istediği zamana bağlı işlemleri tamamlamak için ön plan hizmetlerini tam alarm modunda başlatın.
Bildirim trambolin kısıtlamaları: Kullanıcılar bildirimlere dokunduklarında, bazı uygulamalar kullanıcının gördüğü ve etkileşimde bulunduğu etkinliği başlatan bir uygulama bileşenini başlatarak yanıt verir. Bu uygulama bileşeni, bildirim trambolini olarak bilinir.
Uygulamalar, bildirim trambolinleri olarak kullanılan hizmetlerden veya yayın alıcılarından etkinlik başlatmamalıdır. Kullanıcı bildirim içindeki bir bildirime veya işlem düğmesine dokunduktan sonra, uygulamanız bir hizmetin veya yayın alıcısının içinde
startActivity()
çağrısı yapamaz.
Android 12'yi (API düzeyi 31) hedefleyen uygulamaları etkileyen değişikliklerin tamamını görüntüleyin.
Android 11'den (API düzeyi 30) önceki sürümleri taşıma
Verilerinizi taşıyacağınız Android sürümünü seçin:
Android 5'e (API düzeyi 21) geçme
Uygulamanızın bu sürümlerde sunulan değişiklikleri dikkate aldığından emin olmak için aşağıdaki sürümlerin her biri için ilgili Davranış Değişiklikleri sayfasına bakın:
Bir sonraki bölümde bulunan talimatları izleyerek devam edin.
Android 6'ya (API düzeyi 23) geçme
Aşağıdaki noktalar, Android 6.0 ve platformun daha yeni sürümlerini hedefleyen uygulamalar için geçerlidir:
-
-
Tehlikeli izinler sadece çalışma zamanında verilir. Kullanıcı arayüzü akışlarınız, bu izinleri vermek için gerekli olanakları sağlamalıdır.
-
Mümkün olduğunda, uygulamanızın izin isteklerinin reddedilmesini ele almaya hazır olduğundan emin olun. Örneğin, bir kullanıcı cihazın GPS'ine erişim isteğini reddederse uygulamanızın devam etmek için başka bir yolu olduğundan emin olun.
-
Android 6.0'da (API seviyesi 23) başlatılan değişikliklerin kapsamlı bir listesi için platformun ilgili sürümünün Davranış Değişiklikleri sayfasına bakın.
Bir sonraki bölümde bulunan talimatları izleyerek devam edin.
Android 7'ye (API düzeyi 24) geçme
Aşağıdaki noktalar, Android 7.0 ve platformun daha yeni sürümlerini hedefleyen uygulamalar için geçerlidir:
-
Doz ve Uygulamayı Beklemeye Alma
Çeşitli platform sürümlerinde başlatılan artımlı değişiklikleri kapsayan Doz ve Uygulamayı Beklemeye Alma için Optimizasyon bölümünde açıklanan davranışlara göre tasarım yapın.
Bir cihaz Doz ve Uygulama Bekleme Modu'ndayken sistem aşağıdaki gibi davranır:
- Ağ erişimini kısıtlar
- Alarmları, senkronizasyonları ve işleri erteler
- GPS ve kablosuz ağ taramalarını kısıtlar
- Normal öncelikli Firebase Cloud Messaging mesajlarını kısıtlar.
-
İzin Değişiklikleri
- Sistem, uygulamaya özel dizinlere erişimi kısıtlar.
-
Uygulamanızın dışında bir
file://
URI'si göstermek birFileUriExposedException
tetikler. Uygulamanızın dışında dosya paylaşmanız gerekiyorsaFileProvider
uygulayın
-
Sistem, NDK olmayan kitaplıklara bağlanmayı yasaklar.
Android 7.0'da (API seviyesi 24) başlatılan değişikliklerin kapsamlı bir listesi için platformun ilgili sürümünün Davranış Değişiklikleri sayfasına bakın.
Bir sonraki bölümde bulunan talimatları izleyerek devam edin.
Android 8'e (API düzeyi 26) geçme
Aşağıdaki noktalar, Android 8.0 ve platformun daha yeni sürümlerini hedefleyen uygulamalar için geçerlidir:
-
Arka Plan Yürütme Sınırları
-
Sistem, ön planda çalışmayan uygulamaların hizmetlerini kısıtlar.
-
startService()
yasaklı olduğundastartService()
artık bir uygulama uygulamayı çağırmaya çalıştığında istisna atıyor. -
Ön plan hizmetlerini başlatmak için uygulamaların
startForeground()
vestartForegroundService()
kullanması gerekir. - Android 8.0 (API düzeyi 26) Davranış Değişiklikleri sayfasında açıklandığı gibi, JobScheduler API'sında yapılan değişiklikleri dikkatli bir şekilde inceleyin.
- Firebase Cloud Messaging, Google Play hizmetleri SDK'sının 10.2.1 veya daha sonraki bir sürümünü gerektirir.
- Firebase Cloud Messaging kullanıldığında, mesaj teslimi arka plan yürütme sınırlarına tabidir. Mesaj alındıktan sonra arka plan çalışması gerektiğinde (ör. arka plan veri senkronizasyonu gerçekleştirmek), uygulamanız işleri Firebase Job Dispatcher veya JobIntentService kullanarak planlamalıdır. Daha fazla bilgi için Firebase Cloud Messaging belgelerine bakın.
-
-
Örtülü yayınlar
-
Örtülü yayınlar kısıtlanmıştır. Arka plan etkinliklerini işleme hakkında bilgi için
JobScheduler
API dokümanlarına bakın.
-
Örtülü yayınlar kısıtlanmıştır. Arka plan etkinliklerini işleme hakkında bilgi için
-
Arka Plan Konum Sınırları
-
Arka planda çalışan uygulamalar konum verilerine sınırlı erişime sahiptir.
- Google Play Hizmetleri olan cihazlarda, düzenli konum güncellemeleri almak için çok kaynaklı konum sağlayıcısını kullanın.
-
Arka planda çalışan uygulamalar konum verilerine sınırlı erişime sahiptir.
-
Sistem, ön planda çalışmayan uygulamaların hizmetlerini kısıtlar.
-
Bildirim Kanalları
- Her kanal için bildirim kesinti özelliklerini tanımlamanız gerekir.
- Bildirimlerin görünmesi için bir kanala bildirim atamalısınız.
-
Platformun bu sürümünde
NotificationCompat.Builder
destekleniyor.
-
Gizlilik
- ANDROID_ID her uygulama imzalama anahtarı için belirlenir.
Android 8.0'da (API seviyesi 26) başlatılan değişikliklerin kapsamlı bir listesi için platformun ilgili sürümünün Davranış Değişiklikleri sayfasına bakın.
Android 8'den (API 26) Android 9'a (API 28) geçiş
-
Güç Yönetimi
- Uygulama Bekleme paketleri ertelenmiş işler, alarmlar ve yüksek öncelikli mesajlara ilişkin kotalar gibi uygulama etkileşimine dayalı yeni arka plan kısıtlamaları getirir
- Pil tasarrufuyla ilgili iyileştirmeler, uygulamayı beklemeye alma uygulamalarıyla ilgili sınırlamaları artırır
-
Ön plan hizmeti izni
FOREGROUND_SERVICE
adlı normal iznin (çalışma zamanında istenen izin değil) istenmesi gerekir
-
Gizlilikle ilgili değişiklikler
- Arka plan sensörlerine sınırlı erişim
- Arama günlüklerine kısıtlı erişim artık
CALL_LOG
izin grubunda - Telefon numaralarına erişim kısıtlandı,
READ_CALL_LOG
izni gerekli - Kablosuz bağlantı bilgilerine kısıtlı erişim
Android 9.0'da (API seviyesi 28) başlatılan değişikliklerin kapsamlı bir listesi için davranış değişiklikleri sayfasını inceleyin.
Android 9'dan (API düzeyi 28) Android 10'a (API düzeyi 29) geçiş
-
Tam ekran amacı taşıyan bildirimler
-
USE_FULL_SCREEN_INTENT
adlı normal iznin (çalışma zamanında istenen izin değil) istenmesi gerekir.
-
-
Katlanabilir cihazlar ve büyük ekranlı cihazlar için destek
-
Artık birden fazla etkinlik aynı anda "devam ettirildi" durumunda olabilir, ancak gerçekte yalnızca bir tanesine odaklanılmıştır.
-
Bu değişiklik
onResume()
veonPause()
davranışını etkiler. -
onTopResumedActivityChanged()
'e abone olduğunuzda tespit edilebilen "en çok devam ettirilen" yeni yaşam döngüsü kavramı.- Yalnızca bir etkinlik "en üstte devam ettirilebilir".
-
Bu değişiklik
-
resizeableActivity
false
olarak ayarlandığında uygulamalar, daha dar en boy oranlarında uygulamaya otomatik olarak sinemaskop efekti ekleyen birminAspectRatio
daha belirtebilir.
-
Artık birden fazla etkinlik aynı anda "devam ettirildi" durumunda olabilir, ancak gerçekte yalnızca bir tanesine odaklanılmıştır.
-
Gizlilikle ilgili değişiklikler
-
Kapsamlı depolama
- Harici depolama erişimi, yalnızca uygulamaya özel bir dizin ve uygulamanın oluşturduğu belirli medya türleriyle sınırlıdır.
-
Uygulama arka plandayken konuma erişim kısıtlandı. Bunun için
ACCESS_BACKGROUND_LOCATION
izni gerekiyor. - IMEI ve seri numarası gibi sıfırlanamayan tanımlayıcılara erişimi kısıtlandı.
-
Kullanıcının adım sayısı gibi fiziksel aktivite bilgilerine erişimin kısıtlanması. Bunun için
ACTIVITY_RECOGNITION
izni gerekiyor. -
Bazı telefon, Bluetooth ve kablosuz API'lere erişimi
ACCESS_FINE_LOCATION
izni gerektirecek şekilde kısıtlandı. -
Kablosuz ayarlarına kısıtlı erişim
- Uygulamalar artık kablosuz bağlantıyı doğrudan etkinleştiremez veya devre dışı bırakamaz ve bunu ayar panellerini kullanarak yapmaları gerekir.
-
Kablosuz ağ bağlantısı başlatma,
WifiNetworkSpecifier
veyaWifiNetworkSuggestion
kullanımını gerektiren kısıtlamalar.
-
Kapsamlı depolama
Android 10'dan (API düzeyi 29) Android 11'e (API düzeyi 30) geçiş
-
Gizlilik
- Kapsamlı depolama yaptırımı : Uygulamalar, uygulamaya özel, medya ve diğer dosya türlerinin kaydedildiği ve bunlara özel konumlar kullanılarak erişildiği kapsamlı depolama modelini benimsemelidir.
- İzinleri otomatik sıfırlama: Kullanıcılar birkaç aydır bir uygulamayla etkileşimde bulunmazsa sistem, uygulamanın hassas izinlerini otomatik olarak sıfırlar. Bu durum çoğu uygulamayı etkilemez. Uygulamanız çoğunlukla kullanıcı etkileşimi olmadan arka planda çalışıyorsa kullanıcılardan otomatik sıfırlamayı devre dışı bırakmalarını isteyebilirsiniz.
- Arka planda konum erişimi: Uygulamalar, ön planda ve arka planda konum iznini ayrı ayrı istemelidir. Çalışma zamanında istenen izin iletişim kutuları yerine arka planda konum iznine erişim izni yalnızca uygulama ayarlarında yapılabilir.
-
Paket Görünürlüğü: Bir uygulama, cihazda yüklü uygulamaların ve hizmetlerin listesini sorguladığında döndürülen liste filtrelenir.
- Metin okuma veya Konuşma Tanıma hizmetleri kullanıyorsanız hizmetler için sorgu öğelerini manifest dosyasına eklemeniz gerekir.
-
Güvenlik
- Sıkıştırılmış "resource.arsc" dosyaları artık desteklenmiyor
- APK İmza Şeması v2 artık gerekli. Geriye dönük uyumluluk nedeniyle, geliştiriciler APK İmza Şeması v1 ile imzalamaya devam etmelidir.
- SDK olmayan arayüz kısıtlaması. API düzeyi 30'u hedefleyen uygulamalarda SDK olmayan arayüzlerin kullanılması önerilmez. Bunun nedeni, bu SDK olmayan arayüzlerin bazıları artık engellenmiştir. Engellenen SDK olmayan arayüzlerin kapsamlı bir listesi için Şu anda Android 11'de engellenen SDK olmayan arayüzler bölümüne göz atın.
Android 11'de (API düzeyi 30) başlatılan değişikliklerin kapsamlı bir listesi için Davranış Değişiklikleri sayfasına bakın.
Önceki bölümde bulunan talimatları uygulayarak API 31'e güncelleme işlemine devam edin.
Uygulamalarınızı modernize edin
Uygulamalarınız için hedef API seviyesini güncellediğinizde, uygulamalarınızı modernize ederek kullanıcılarınızı memnun etmek için en son platform özelliklerini kullanmayı düşünün.
- Kameradan en iyi şekilde yararlanmak için Beta sürümündeki KameraX'i kullanmayı düşünebilirsiniz.
- En iyi uygulamaları uygulamanıza yardımcı olacak, standart kod yazmak zorunda kalmamanızı ve karmaşık görevleri basitleştirerek önem verdiğiniz koda odaklanabilmeniz için Jetpack bileşenlerini kullanın.
- Daha az kodla daha hızlı uygulama yazmak için Kotlin'i kullanın.
- Gizlilik gereksinimlerine ve en iyi uygulamalara uyduğunuzdan emin olun.
- Uygulamalarınıza koyu tema desteği ekleyin.
- Uygulamalarınıza hareketle gezinme desteği ekleyin.
- Uygulamanızı Google Cloud Messaging'den (GCM) en yeni Firebase Cloud Messaging sürümüne taşıyın.
- Gelişmiş pencere yönetiminden yararlanın.
- Donanımdaki son gelişmelerden yararlanmak için daha büyük en boy oranlarını (16:9'dan fazla) destekleyin. Uygulamanızın, mevcut ekran alanını dolduracak şekilde yeniden boyutlandırıldığından emin olun. Maksimum en boy oranını yalnızca son çare olarak belirtin. Maksimum en boy oranları hakkında daha fazla bilgi için bkz. Kısıtlanmış Ekran Desteği Bildirimi.
- Uygulamanızın üretkenliği artırmasına ve birden çok ekranı yönetmesine yardımcı olmak için çoklu pencere desteği ekleyin.
- Harika bir küçültülmüş uygulama deneyimi kullanıcı deneyimini iyileştirecekse Pencere İçinde Pencere için destek ekleyin.
- Ekran kesme özelliğine sahip cihazlar için optimize edin.
- Durum çubuğu yüksekliğini varsaymayın. Bunun yerine
WindowInsets
veView.OnApplyWindowInsetsListener
araçlarını kullanın. Daha fazla bilgi için droidcon NYC 2017 videosunu izleyin. - Uygulamanın tüm pencereyi kapladığını varsaymayın. Bunun yerine, konumunu
View.getLocationOnScreen()
yerineView.getLocationInWindow()
kullanarak onaylayın. *MotionEvent
ile ilgili işlem yaparkenMotionEvent.getRawX()
veMotionEvent.getRawY()
yerineMotionEvent.getX()
veMotionEvent.getY()
kullanın.
SDK'larınızı ve kitaplıklarınızı kontrol edip güncelleme
Üçüncü taraf SDK bağımlılıklarınızın API 31'i desteklediğinden emin olun: Bazı SDK sağlayıcıları bunu manifest dosyalarında yayınlar; diğerleri ise ek inceleme gerektirir. API 31'i desteklemeyen bir SDK kullanıyorsanız sorunu çözmek için SDK sağlayıcıyla çalışmayı öncelikli hale getirin.
Ayrıca, uygulamanızın veya oyununuzun targetSdkVersion
özelliğinin özel Android platform kitaplıklarına erişimi kısıtlayabileceğini unutmayın. Ayrıntılar için Platform Kitaplıklarına Bağlanan NDK Uygulamaları bölümüne bakın.
Ayrıca, kullanmakta olduğunuz Android Destek Kitaplığı sürümünde bulunabilecek kısıtlamaları da doğrulamanız gerekir. Her zaman olduğu gibi, Android Destek Kitaplığı'nın ana sürümü ile uygulamanızın compileSdkVersion
sürümü arasında uyumluluğu sağlamanız gerekir.
Destek Kitaplığı'nın ana sürümüyle aynı veya ondan daha küçük bir targetSdkVersion
seçmenizi öneririz. En son uyumluluk özelliklerinden ve hata düzeltmelerinden yararlanmak için yakın zamanda yayınlanmış uyumlu bir Destek Kitaplığı'na güncelleme yapmanızı öneririz.
Uygulamanızı test etme
Uygulamanızın API düzeyini ve özelliklerini uygun şekilde güncelledikten sonra, bazı temel kullanım alanlarını test etmeniz gerekir. Aşağıdaki öneriler her konuyu içermez, sadece test sürecinize rehberlik etmeyi amaçlar. Test yaparak aşağıdakilerden emin olmanızı öneririz:
- Uygulamanız hata veya uyarı olmadan API 29'a derleme yapıyor.
Uygulamanızda, kullanıcının izin isteklerini reddettiği ve kullanıcıdan izin istendiği durumlara yönelik bir strateji uyguluyor. Bunu yapmak için:
- Uygulamanızın Uygulama Bilgileri ekranına gidin ve her bir izni devre dışı bırakın.
- Uygulamayı açın ve kilitlenme olmadığından emin olun.
- Temel kullanım alanı testlerini gerçekleştirin ve gerekli izinlerin yeniden istendiğinden emin olun.
Doz'u, hiç hata olmadan beklenen sonuçlarla uyguluyor.
- Adb'yi kullanarak, uygulamanız çalışırken test cihazınızı Doz'a yerleştirin.
- Firebase Cloud Messaging mesajları tetikleyen kullanım durumlarını test edin.
- Alarmlar veya İşler kullanan kullanım durumlarını test edin.
- Arka plan hizmetlerine olan bağımlılıkları ortadan kaldırın.
- Uygulamanızı Uygulamayı Beklemeye Alma moduna ayarlayın
- Firebase Cloud Messaging mesajları tetikleyen kullanım durumlarını test edin.
- Alarmlar veya İşler kullanan kullanım durumlarını test edin.
- Adb'yi kullanarak, uygulamanız çalışırken test cihazınızı Doz'a yerleştirin.
Çekilen yeni fotoğrafları / videoları işliyor
- Uygulamanızın kısıtlanmış olanları işlediğinden
ACTION_NEW_PICTURE
veACTION_NEW_VIDEO
yayınları doğru şekilde işlediğinden (yani JobScheduler işlerine taşındığından) emin olun. - Bu etkinliklere bağlı olan kritik kullanım alanlarının hâlâ çalıştığından emin olun.
- Uygulamanızın kısıtlanmış olanları işlediğinden
Diğer uygulamalarla dosya paylaşımını işliyor - Başka herhangi bir uygulamayla (aynı geliştiriciye ait başka bir uygulama da) dosya verilerini paylaşan kullanım alanlarını test edin
- İçeriğin diğer uygulamada görünür olup olmadığını ve kilitlenme tetikleyip tetiklemediğini test edin.
Daha fazla bilgi
Size aylık iş ortağı bültenimiz dahil olmak üzere Android ve Google Play'den önemli güncellemeler ile duyuruları gönderebilmemiz için Google Play Console'da e-postalara kaydolun.