Android 13 platformu, uygulamanızı etkileyebilecek davranış değişiklikleri içerir. Aşağıdaki davranış değişiklikleri, targetSdkVersion değerinden bağımsız olarak Android 13'te çalışan tüm uygulamalar için geçerlidir. Uygulamanızı test etmeniz ve ardından, geçerli olduğu durumlarda bunları düzgün bir şekilde desteklemek için gerektiği gibi değiştirmeniz gerekir.
Yalnızca Android 13'ü hedefleyen uygulamaları etkileyen davranış değişikliklerinin listesini de inceleyin.
Performans ve pil
Görev Yöneticisi
Android 13'ten (API düzeyi 33) itibaren kullanıcılar, Şekil 1'de gösterildiği gibi, devam eden ön plan hizmetleri olan uygulamaları durdurmak için bildirim çekmecesinden bir iş akışını tamamlayabilir. Bu özellik, Görev Yöneticisi olarak bilinir. Uygulamalar, kullanıcı tarafından başlatılan bu durdurma işlemini gerçekleştirebilmelidir.
JobScheduler'ı kullanarak önceden getirme işi işlemeyi iyileştirme
JobScheduler, uygulamaların belirli işleri "önceden getirme" işleri olarak işaretlemesine olanak tanır (JobInfo.Builder.setPrefetch() kullanarak). Bu işler, kullanıcı deneyimini iyileştirmek için ideal olarak bir sonraki uygulama başlatma işlemine yakın ve bu işlemden önce çalıştırılmalıdır.
Geçmişte JobScheduler, önceden getirme işlerinin ücretsiz veya fazla verileri fırsatçı bir şekilde kullanmasına izin vermek için yalnızca sinyali kullanıyordu.
Android 13 (API düzeyi 33) ve sonraki sürümlerde sistem, bir uygulamanın bir sonraki başlatılma zamanını belirlemeye çalışır ve önceden getirme işlerini çalıştırmak için bu tahmini kullanır. Uygulamalar, bir sonraki uygulama başlatma işleminden ö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 pil ömrünü daha iyi yönetmesi için aşağıdaki yöntemleri sunar:
- Sistemin, uygulamanızı "kısıtlı" Uygulama Bekleme Grubu'na ne zaman yerleştireceğiyle ilgili kurallar güncellendi.
- Kullanıcı, uygulamanızı arka planda pil kullanımı için "kısıtlanmış" duruma getirdiğinde 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ıtlı" Uygulama Bekleme Grubu'na yerleştirdiğinde uygulamanızın nasıl yanıt verdiğini test edin. Uygulamanızı bu gruba 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 "kısıtlanmış" durumda olan uygulamalara genellikle 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 tetiklenmez.
- İşler yürütülmüyor
Uygulamanızı bu "kısıtlanmış" duruma getirmek 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 Messaging (FCM) Kotaları
Android 13 (API düzeyi 33), yüksek öncelikli FCM'lere yanıt olarak bildirim gösteren uygulamalar için yüksek öncelikli FCM yayınlamanın güvenilirliğini artırmak amacıyla Firebase Cloud Messaging (FCM) kotalarını günceller. Android 13'te (API düzeyi 33) aşağıdaki değişiklikler yapılmıştır:
- Uygulamayı Beklemeye Alma Grupları artık bir uygulamanın kaç tane yüksek öncelikli FCM kullanabileceğini belirlemez.
- Sistem artık, bildirimle sonuçlanmayan yüksek öncelikli mesajları sürekli olarak gönderen bir uygulama tespit ederse yüksek öncelikli mesajların önceliğini düşürür.
Android'in önceki sürümlerinde olduğu gibi, kotayı aşan yüksek öncelikli FCM'ler normal önceliğe düşürülür. FCM'ye yanıt olarak ön plan hizmetlerini (FGS) başlatırken RemoteMessage.getPriority() sonucunu kontrol etmenizi ve PRIORITY_HIGH olduğunu onaylamanızı ve/veya olası ForegroundServiceStartNotAllowedException istisnalarını ele almanızı öneririz.
Uygulamanız, yüksek öncelikli FCM'lere yanıt olarak her zaman 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ı 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 kontrol ve esneklik avantajlarından yararlanmak için en kısa sürede Android 13 veya sonraki sürümleri hedeflemenizi önemle tavsiye ederiz.
Uygulama izinleriyle ilgili en iyi uygulamalar hakkında daha fazla bilgi edinin.
Panodaki hassas içeriği gizleme
Uygulamanız, kullanıcıların şifreler veya kredi kartı bilgileri gibi hassas içerikleri panoya kopyalamasına izin veriyorsa ClipboardManager#setPrimaryClip() yöntemini çağırmadan önce ClipData'nın ClipDescription öğesine bir işaret eklemeniz gerekir. Bu işaretin eklenmesi, hassas içeriğin içerik önizlemesinde görünmesini engeller.
Hassas içerikleri işaretlemek için ClipDescription öğesine bir boole 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 pano kullanıcı arayüzü hakkında daha fazla bilgi edinmek için Kopyalama ve yapıştırma özelliği sayfasını ziyaret edin.
Güvenlik
Paylaşılan kullanıcı kimliğinden geçiş yapma
Uygulamanız, desteği sonlandırılan android:sharedUserId özelliğini kullanıyorsa ve artık bu özelliğin işlevine bağlı değilse 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 bağlı olmadığını bildirir. Uygulamanız android:sharedUserMaxSdkVersion iznini beyan ediyorsa ve Android 13 veya sonraki sürümleri çalıştıran cihazlara yeni yükleniyorsa android:sharedUserId iznini hiç tanımlamamışsınız gibi davranır. Güncellenen uygulamalar, mevcut paylaşılan kullanıcı kimliğini kullanmaya devam eder.
Paylaşılan kullanıcı kimlikleri, paket yöneticisinde belirsiz davranışlara neden olur. Uygulamanız, paylaşılan bileşenler arasında 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ılabilir ön plan hizmeti bildirimleri
Android 13 veya sonraki sürümleri çalıştıran cihazlarda kullanıcılar, ön plan hizmetleriyle ilişkili bildirimleri varsayılan olarak kapatabilir.
Temel işlevler
Konuşma hizmeti uygulamasının eski kopyası kaldırıldı
Android 13, Google Uygulaması'ndan SpeechService uygulamasını (Sesli IME, RecognitionService ve intent tabanlı API dahil) kaldırır.
Android 12'de aşağıdaki değişiklikler yapıldı:
SpeechServiceişlevleri, varsayılanSpeechServicesağlayıcı olan Google Ses Hizmetleri uygulamasına taşındı.RecognitionServiceiş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 Ses Hizmetleri uygulamasına yönlendirmek üzere bir trambolin kullanır. Android 13'te bu trambolin kaldırılmıştır.
Uygulamalar, belirli bir uygulamayı sabit kodlamak yerine SpeechService için cihazın varsayılan sağlayıcısını kullanmalıdır.