Android 13 platformunda, uygulamanızı etkileyebilecek davranış değişiklikleri yer alır. Aşağıdaki davranış değişiklikleri, targetSdkVersion
'den bağımsız olarak Android 13'te çalıştırılan tüm uygulamalar için geçerlidir. Uygulamanızı test etmeniz ve ardından geçerli olduğu durumlarda bunları düzgün şekilde desteklemek için gerektiği gibi değiştirmeniz gerekir.
Yalnızca Android 13'ü hedefleyen uygulamaları etkileyen davranış değişiklikleri listesini de incelemeyi unutmayın.
Performans ve pil
Görev Yöneticisi
Android 13'ten (API düzeyi 33) itibaren kullanıcılar, devam eden ön plan hizmetleri olan uygulamaları durdurmak için bildirim çekmecesinden bir iş akışı tamamlayabilir (Şekil 1'de gösterilmiştir). Bu kolaylık Görev Yöneticisi olarak bilinir. Uygulamalar, kullanıcı tarafından başlatılan bu durdurma işlemini yönetebilmelidir.
JobScheduler'ı kullanarak ön getirme işiyle ilgili işlemleri iyileştirme
JobScheduler, uygulamaların belirli işleri "ön getirme" işleri olarak işaretlemesine olanak tanır (JobInfo.Builder.setPrefetch()
kullanılarak). Bu, kullanıcı deneyimini iyileştirmek için ideal olarak bir sonraki uygulama lansmanına yakın zamanda ve ondan önce çalıştırmaları gerektiği anlamına gelir.
JobScheduler, geçmişte bu sinyali yalnızca ön prefetch işlerinin fırsatçı bir şekilde ücretsiz veya fazladan verileri kullanmasına izin vermek için kullanmıştır.
Android 13 (API düzeyi 33) ve sonraki sürümlerde sistem, bir uygulamanın bir sonraki ne zaman başlatılacağını belirlemeye çalışır ve ön getirme işlerini çalıştırmak için bu tahmini kullanır. Uygulamalar, bir sonraki uygulama lansmanından önce yapılmasını istedikleri tüm işler için önceden getirme işlerini kullanmaya çalışmalıdır.
Pil Kaynağı Kullanımı
Android 13 (API düzeyi 33), sistemin cihazın pil ömrünü daha iyi yönetmesi için aşağıdaki yöntemleri sağlar:
- Sistemin uygulamanızı ne zaman "kısıtlanmış" Uygulama Bekleme Havuzu'na yerleştirdiğiyle ilgili kurallar güncellendi.
- Kullanıcı, uygulamanızı arka planda pil kullanımı için "kısıtlanmış" duruma aldığında uygulamanızın yapabileceği işlemlerle ilgili yeni sınırlamalar.
Uygulamanızı bu değişikliklerle test ederken aşağıdakileri kontrol ettiğinizden emin olun:
Sistem uygulamanızı "kısıtlanmış" Uygulama Bekleme Havuzu'na yerleştirdiğinde uygulamanızın nasıl yanıt verdiğini test edin. Uygulamanızı bu pakete atamak için aşağıdaki Android Debug Bridge (ADB) komutunu kullanın:
adb shell am set-standby-bucket PACKAGE_NAME restricted
Uygulamanızın, arka planda pil kullanımı için genellikle "kısıtlanmış" durumdaki uygulamalara uygulanan aşağıdaki kısıtlamalara nasıl yanıt verdiğini test edin:
- Ön plan hizmetleri başlatılamıyor
- Mevcut ön plan hizmetleri ön plandan kaldırılır
- Alarmlar tetiklenmiyor
- İşler yürütülmüyor
Uygulamanızı bu "kısıtlanmış" duruma yerleştirmek için aşağıdaki ADB komutunu kullanın:
adb shell cmd appops set PACKAGE_NAME RUN_ANY_IN_BACKGROUND ignore
Yüksek Öncelikli Firebase Cloud Message (FCM) Kotaları
Android 13 (API düzeyi 33), yüksek öncelikli FCM'lere yanıt olarak bildirim gösteren uygulamalarda yüksek öncelikli FCM yayınlamanın güvenilirliğini artırmak için Firebase Cloud Messaging (FCM) kotalarını günceller. Android 13'te (API düzeyi 33) aşağıdaki değişiklikler yapıldı:
- Uygulama Bekleme Havuzları artık bir uygulamanın kaç tane yüksek öncelikli FCM kullanabileceğini belirlemez.
- Yüksek öncelikli FCM kotaları, yüksek öncelikli FCM'lere yanıt olarak kullanıcıya gösterilen bildirim sayısına göre ölçeklendirilir.
Android'in önceki sürümlerinde olduğu gibi, kotayı aşan yüksek öncelikli FCM'ler normal önceliğe düşürülür. Bir FCM'ye yanıt olarak ön plan hizmetleri (FGS) başlatırken RemoteMessage.getPriority()
sonucunu kontrol etmenizi ve PRIORITY_HIGH
olduğunu onaylamanızı ve/veya olası ForegroundServiceStartNotAllowedException
istisnaları ele almanızı öneririz.
Uygulamanız, yüksek öncelikli FCM'lere her zaman yanıt olarak bildirim yayınlamıyorsa bildirimle sonuçlanan mesajların önceliğinin düşürülmemesi için bu FCM'lerin önceliğini normal olarak değiştirmenizi öneririz.
Gizlilik
Bildirimler için çalışma zamanında istenen izin
Android 13 (API düzeyi 33), çalışma zamanında bildirim izni sunar:
POST_NOTIFICATIONS
.
Bu değişiklik, kullanıcıların kendileri için en önemli bildirimlere odaklanmasına yardımcı olur.
Bu özelliğin sunduğu ek denetim ve esneklikten yararlanmak için en kısa sürede Android 13 veya sonraki bir sürümü hedeflemenizi önemle tavsiye ederiz.
Uygulama izinleriyle ilgili en iyi uygulamalar hakkında daha fazla bilgi edinin.
Hassas içeriği panosundan gizleme
Uygulamanız, kullanıcıların şifre veya kredi kartı bilgileri gibi hassas içerikleri panosuna kopyalamasına izin veriyorsa ClipboardManager#setPrimaryClip()
işlevini çağırmadan önce ClipData'nın ClipDescription
özelliğine bir işaret eklemeniz gerekir. Bu işareti eklemek, hassas içeriğin içerik önizlemesinde görünmesini engeller.
Hassas içerikleri işaretlemek için ClipDescription
değerine bir boole ek ekleyin. Hedeflenen API düzeyinden bağımsız olarak tüm uygulamalar bunu yapmalıdır.
// When your app is compiled with the API level 33 SDK or higher
clipData.apply {
description.extras = PersistableBundle().apply {
putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, true)
}
}
// If your app is compiled with a lower SDK
clipData.apply {
description.extras = PersistableBundle().apply {
putBoolean("android.content.extra.IS_SENSITIVE", true)
}
}
Yeni panos kullanıcı arayüzü hakkında daha fazla bilgi edinmek için Kopyala ve yapıştır özelliği sayfasını ziyaret edin.
Güvenlik
Paylaşılan kullanıcı kimliğinden taşıma
Uygulamanız desteği sonlandırılan android:sharedUserId
özelliğini kullanıyorsa ve artık özelliğin işlevine ihtiyaç duymuyorsa aşağıdaki kod snippet'inde gösterildiği gibi android:sharedUserMaxSdkVersion
özelliğini 32
olarak ayarlayabilirsiniz:
<manifest ...> <!-- To maintain backward compatibility, continue to use "android:sharedUserId" if you already added it to your manifest. --> android:sharedUserId="SHARED_PACKAGE_NAME" android:sharedUserMaxSdkVersion="32" ... </manifest>
Bu özellik, sisteme uygulamanızın artık paylaşılan bir kullanıcı kimliğine ihtiyaç duymadığını bildirir. Uygulamanız android:sharedUserMaxSdkVersion
bildiriyorsa ve Android 13 veya sonraki sürümleri çalıştıran cihazlara yeni yükleniyorsa uygulamanız, android:sharedUserId
'ü hiç tanımlamamışsınız gibi davranır. Güncellenen uygulamalarda mevcut paylaşılan kullanıcı kimliği kullanılmaya devam eder.
Paylaşılan kullanıcı kimlikleri, paket yöneticisinde kesin olmayan davranışlara neden olur. Bunun yerine, uygulamanız paylaşılan bileşenler arasındaki birlikte çalışabilirliği kolaylaştırmak için hizmetler ve içerik sağlayıcılar gibi uygun iletişim mekanizmalarını kullanmalıdır.
Kullanıcı deneyimi
Kapatılabilen ön plan hizmeti bildirimleri
Android 13 veya sonraki sürümleri çalıştıran cihazlarda kullanıcı, ön plan hizmetleriyle ilişkili bildirimleri varsayılan olarak reddedebilir.
Temel işlevler
Konuşma hizmeti uygulamasının eski kopyası kaldırıldı
Android 13, Google uygulamasından Voice IME, RecognitionService
ve amaç tabanlı API dahil olmak üzere SpeechService
uygulamasını kaldırır.
Android 12'de aşağıdaki değişiklikler yapıldı:
SpeechService
işlevleri, varsayılanSpeechService
sağlayıcısı olan Google Ses Hizmetleri uygulamasına taşındı.RecognitionService
işlevi, cihaz üzerinde konuşma tanımayı desteklemek için Android System Intelligence uygulamasına taşındı.
Google uygulaması, Android 12'de uygulama uyumluluğunu korumaya yardımcı olmak için trafiği Google'ın Konuşma Hizmetleri uygulamasına yönlendirmek üzere bir köprü kullanır. Android 13'te bu köprü kaldırılır.
Uygulamalar, belirli bir uygulamayı sabit kodlamak yerine SpeechService
için cihazın varsayılan sağlayıcısını kullanmalıdır.