Önceki sürümlerde olduğu gibi Android 11 de uygulamanızı etkileyebilecek davranış değişikliklerini içerir. Aşağıdaki davranış değişiklikleri yalnızca Android 11 veya sonraki sürümleri hedefleyen uygulamalar için geçerlidir. Uygulamanız targetSdkVersion
özelliğini 30
olarak ayarlarsa uygun durumlarda uygulamanızı bu davranışları
destekleyecek şekilde değiştirmeniz gerekir.
Android 11 üzerinde çalışan tüm uygulamaları etkileyen davranış değişiklikleri listesini de incelemeyi unutmayın.
Gizlilik
Android 11, kullanıcı gizliliğini iyileştirmek için aşağıdakiler de dahil olmak üzere değişiklikler ve kısıtlamalar uygular:
- Kapsamlı depolama yaptırımı: Harici depolama dizinlerine erişim, uygulamaya özel bir dizin ve uygulamanın oluşturduğu belirli medya türleriyle sınırlıdır.
- İzinleri otomatik sıfırlama: Kullanıcılar birkaç ay boyunca bir uygulamayla etkileşimde bulunmazsa sistem, uygulamanın hassas izinlerini otomatik olarak sıfırlar.
- Arka planda konum erişimi: Uygulamalara arka planda konum erişimi izni vermek için kullanıcıların sistem ayarlarına yönlendirilmesi gerekir.
- Paket görünürlüğü: Bir uygulama, cihazdaki yüklü uygulamaların listesini sorguladığında döndürülen liste filtrelenir.
Daha fazla bilgi edinmek için Gizlilik sayfasını inceleyin.
Güvenlik
Yığın işaretçisi etiketleme
Değişiklik ayrıntıları
Adı Değiştir: NATIVE_HEAP_POINTER_TAGGING
Değişiklik Kimliği: 135754954
Nasıl geçiş yapılır?
Uygulamanızın Android 11 ile uyumluluğunu test ederken aşağıdaki ADB komutlarını kullanarak bu değişikliği açabilir veya kapatabilirsiniz:
adb shell am compat enable (135754954|NATIVE_HEAP_POINTER_TAGGING) PACKAGE_NAME
adb shell am compat disable (135754954|NATIVE_HEAP_POINTER_TAGGING) PACKAGE_NAME
Uyumluluk çerçevesi ve geçiş değişiklikleri hakkında daha fazla bilgi için Uygulamanızdaki platform davranışı değişikliklerini test etme ve hata ayıklama bölümüne bakın.
Yığın işaretçileri artık en önemli baytta (MSB) sıfır dışında bir etikete sahip. MSB'yi değiştirenler de dahil olmak üzere, işaretçileri yanlış kullanan uygulamalar artık kilitlenebilir veya başka sorunlarla karşılaşabilir. Bu değişiklik, ARM Bellek Etiketleme Uzantısı (MTE) etkin olan gelecekteki donanımları desteklemek için gereklidir. Daha fazla bilgi edinmek için Etiketli İşaretçiler bölümünü inceleyin.
Bu özelliği devre dışı bırakmak için allowNativeHeapPointerTagging
manifest belgelerini inceleyin.
Kısa ileti güncellemeleri
Arka plandan gönderilen özel kısa mesaj bildirimleri engellendi
Android 11 veya sonraki sürümleri hedefleyen bir uygulama tarafından arka plandan gönderilen özel görünümler içeren durum, güvenlik nedenleriyle ve iyi bir kullanıcı deneyimi sağlamak amacıyla sistem tarafından engellenir. Kısa mesaj toastlarına yine de izin verildiğini unutmayın. Bunlar, setView()
yöntemini çağırmayan Toast.makeText()
kullanılarak oluşturulmuş kısa mesajlardır.
Uygulamanız herhangi bir şekilde arka plandan özel bir görünüm içeren bir durum mesajı yayınlamaya çalışırsa sistem bu mesajı kullanıcıya göstermez. Bunun yerine, sistem aşağıdaki mesajı logcat'e kaydeder:
W/NotificationService: Blocking custom toast from package \ <package> due to package not in the foreground
Kısa mesaj geri çağırmaları
Kısa mesaj (metin veya özel) göründüğünde veya kaybolduğunda bildirim almak istiyorsanız Android 11'de eklenen addCallback()
yöntemini kullanın.
Metin durum mesajı API'si değişiklikleri
Android 11 veya sonraki sürümleri hedefleyen uygulamalar, kısa mesaj bildirimlerinin aşağıdaki yan etkilerini görür:
getView()
yönteminull
sonucunu döndürür.- Aşağıdaki yöntemlerin döndürdüğü değerler gerçek değerleri yansıtmaz. Bu nedenle, uygulamanızda bu değerlerden yararlanmamalısınız:
- Aşağıdaki yöntemler işlem değildir, dolayısıyla uygulamanız bunları kullanmamalıdır:
Bağlantı
APN veritabanına kısıtlı okuma erişimi
Değişiklik ayrıntıları
Adı Değiştir: APN_READING_PERMISSION_CHANGE_ID
Değişiklik Kimliği: 124107808
Nasıl geçiş yapılır?
Uygulamanızın Android 11 ile uyumluluğunu test ederken aşağıdaki ADB komutlarını kullanarak bu değişikliği açabilir veya kapatabilirsiniz:
adb shell am compat enable (124107808|APN_READING_PERMISSION_CHANGE_ID) PACKAGE_NAME
adb shell am compat disable (124107808|APN_READING_PERMISSION_CHANGE_ID) PACKAGE_NAME
Uyumluluk çerçevesi ve geçiş değişiklikleri hakkında daha fazla bilgi için Uygulamanızdaki platform davranışı değişikliklerini test etme ve hata ayıklama bölümüne bakın.
Android 11'i hedefleyen uygulamalar artık Telefon sağlayıcı APN veritabanını okumak veya bu veritabanına erişmek için Manifest.permission.WRITE_APN_SETTINGS
ayrıcalıklı izne ihtiyaç duyuyor. APN veritabanına bu izin olmadan erişmeye çalışmak bir güvenlik istisnası oluşturur.
Erişilebilirlik
Manifest dosyasında TTS motorlarıyla etkileşimi bildirme
Paket görünürlüğünde yapılan değişiklikler nedeniyle, Android 11'i hedefleyen ve bir metin okuma (TTS) motoruyla etkileşimde bulunan uygulamaların manifest dosyalarına aşağıdaki <queries>
öğesini eklemesi gerekir:
<queries> <intent> <action android:name="android.intent.action.TTS_SERVICE" /> </intent> </queries>
Meta veri dosyasında erişilebilirlik düğmesi kullanımını bildirme
Değişiklik ayrıntıları
Adı Değiştir: REQUEST_ACCESSIBILITY_BUTTON_CHANGE
Değişiklik Kimliği: 136293963
Nasıl geçiş yapılır?
Uygulamanızın Android 11 ile uyumluluğunu test ederken aşağıdaki ADB komutlarını kullanarak bu değişikliği açabilir veya kapatabilirsiniz:
adb shell am compat enable (136293963|REQUEST_ACCESSIBILITY_BUTTON_CHANGE) PACKAGE_NAME
adb shell am compat disable (136293963|REQUEST_ACCESSIBILITY_BUTTON_CHANGE) PACKAGE_NAME
Uyumluluk çerçevesi ve geçiş değişiklikleri hakkında daha fazla bilgi için Uygulamanızdaki platform davranışı değişikliklerini test etme ve hata ayıklama bölümüne bakın.
Erişilebilirlik hizmetiniz, Android 11'den itibaren sistemin erişilebilirlik düğmesiyle ilişkisi olduğuna dair bir çalışma zamanı bildirimi yapamaz. AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON
öğesini bir AccessibilityServiceInfo
nesnesinin flags
özelliğine eklerseniz çerçeve, erişilebilirlik düğmesi geri çağırma etkinliklerini hizmetinize iletmez.
Erişilebilirlik hizmetinizde erişilebilirlik geri çağırma etkinliklerini almak için hizmetinizin erişilebilirlik düğmesiyle ilişkilendirmesini tanımlamak için erişilebilirlik hizmeti meta veri dosyanızı kullanın. accessibilityFlags
özelliği tanımınıza flagRequestAccessibilityButton
değerini ekleyin. Erişilebilirlik hizmeti meta veri dosyası için ortak konum res/raw/accessibilityservice.xml
şeklindedir.
Kamera
Medya amacı işlemleri için sistemin varsayılan kamerası gerekir
Android 11'den itibaren yalnızca önceden yüklenmiş sistem kamerası uygulamaları aşağıdaki intent işlemlerine yanıt verebilir:
android.media.action.VIDEO_CAPTURE
android.media.action.IMAGE_CAPTURE
android.media.action.IMAGE_CAPTURE_SECURE
Önceden yüklenmiş birden fazla sistem kamerası uygulaması varsa sistem, kullanıcıya uygulamayı seçmesi için bir iletişim kutusu gösterir. Uygulamanızın, kendi adına resim veya video çekmek için belirli bir üçüncü taraf kamera uygulaması kullanmasını istiyorsanız niyet için bir paket adı veya bileşen ayarlayarak bu amaçları belirgin hale getirebilirsiniz.
Uygulama paketleme ve yükleme
Sıkıştırılmış kaynak dosyalar
Değişiklik ayrıntıları
Adı Değiştir: RESOURCES_ARSC_COMPRESSED
Değişiklik Kimliği: 132742131
Nasıl geçiş yapılır?
Uygulamanızın Android 11 ile uyumluluğunu test ederken aşağıdaki ADB komutlarını kullanarak bu değişikliği açabilir veya kapatabilirsiniz:
adb shell am compat enable (132742131|RESOURCES_ARSC_COMPRESSED) PACKAGE_NAME
adb shell am compat disable (132742131|RESOURCES_ARSC_COMPRESSED) PACKAGE_NAME
Uyumluluk çerçevesi ve geçiş değişiklikleri hakkında daha fazla bilgi için Uygulamanızdaki platform davranışı değişikliklerini test etme ve hata ayıklama bölümüne bakın.
Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar, sıkıştırılmış bir resources.arsc
dosyası içeriyorsa veya bu dosya 4 baytlık bir sınırda hizalanmamışsa yüklenemez. Bu koşullardan herhangi birinin geçerli olması halinde bu dosya sistem tarafından bellekle eşlenemez. Bellek eşlenemeyen kaynak tablolarının RAM'deki bir arabelleğe okunması gerekir. Bu durum, sistemde gereksiz bellek baskısına ve cihazda RAM kullanımının önemli ölçüde artmasına neden olur.
Önceden sıkıştırılmış bir resources.arsc
dosyası kullandıysanız bunun yerine uygulama kaynaklarını küçültme veya uygulamanızı küçültmek, gizlemek ve optimize etmek için diğer yöntemler gibi alternatif stratejiler deneyin.
APK İmza Şeması v2 artık gerekli
Şu anda yalnızca APK İmza Şeması v1 kullanılarak imzalanan Android 11'i (API düzeyi 30) hedefleyen uygulamaların da APK İmza Şeması v2 veya üstü kullanılarak imzalanması gerekir. Kullanıcılar, Android 11 çalıştıran cihazlarda yalnızca APK İmza Şeması v1 ile imzalanmış uygulamaları yükleyemez veya güncelleyemez.
Uygulamanızın APK İmza Şeması v2 veya sonraki bir sürümle imzalandığını doğrulamak için Android Studio'yu veya komut satırında apksigner
aracını kullanabilirsiniz.
Firebase
Firebase JobDispatcher ve GCMNetworkManager
Uygulamanız API düzeyi 30 veya üstünü hedefliyorsa Android 6.0 (API düzeyi 23) veya sonraki sürümleri çalıştıran cihazlarda Firebase JobDispatcher ve GcmNetworkManager API çağrıları devre dışı bırakılır. Taşıma bilgileri için bkz. Firebase JobDispatcher'dan WorkManager'a Taşıma ve GCMNetworkManager'dan WorkManager'a Taşıma.
Konuşma tanıma
Paket görünürlüğünde yapılan değişiklikler nedeniyle, Android 11'i hedefleyen ve bir konuşma tanıma hizmetiyle etkileşimde bulunan uygulamaların manifest dosyalarına aşağıdaki <queries>
öğesini eklemesi gerekir:
<queries> <intent> <action android:name="android.speech.RecognitionService" /> </intent> </queries>
OnSharedPreferenceChangeListener için geri arama değişiklikleri
Değişiklik ayrıntıları
Adı Değiştir: CALLBACK_ON_CLEAR_CHANGE
Değişiklik Kimliği: 119147584
Nasıl geçiş yapılır?
Uygulamanızın Android 11 ile uyumluluğunu test ederken aşağıdaki ADB komutlarını kullanarak bu değişikliği açabilir veya kapatabilirsiniz:
adb shell am compat enable (119147584|CALLBACK_ON_CLEAR_CHANGE) PACKAGE_NAME
adb shell am compat disable (119147584|CALLBACK_ON_CLEAR_CHANGE) PACKAGE_NAME
Uyumluluk çerçevesi ve geçiş değişiklikleri hakkında daha fazla bilgi için Uygulamanızdaki platform davranışı değişikliklerini test etme ve hata ayıklama bölümüne bakın.
Android 11'i (API düzeyi 30) hedefleyen uygulamalarda artık Editor.clear
her çağrıldığında bir null
anahtarıyla OnSharedPreferenceChangeListener.onSharedPreferenceChanged
'e geri arama yapılıyor.
SDK olmayan arayüz kısıtlamaları
Android 11, Android geliştiricileriyle yapılan ortak çalışmalara ve en son dahili testlere göre kısıtlanmış SDK dışı arayüzlerin güncellenmiş listelerini içerir. Mümkün olduğunda, SDK olmayan arayüzleri kısıtlamadan önce herkese açık alternatiflerin kullanılabilir olmasını sağlarız.
Uygulamanız Android 11'i hedeflemiyorsa bu değişikliklerden bazıları sizi hemen etkilemeyebilir. Bununla birlikte, şu anda bazı SDK dışı arayüzleri (uygulamanızın hedef API düzeyine bağlı olarak) kullanabilseniz de herhangi bir SDK olmayan yöntem veya alanın kullanılması her zaman uygulamanızın bozulma riskini artırır.
Uygulamanızın SDK olmayan arayüzler kullanıp kullanmadığından emin değilseniz öğrenmek için uygulamanızı test edebilirsiniz. Uygulamanız SDK olmayan arayüzlere dayanıyorsa SDK alternatiflerine geçiş planlamaya başlamanız gerekir. Yine de, bazı uygulamaların SDK dışı arayüz kullanımıyla ilgili geçerli kullanım alanları olduğunun farkındayız. Uygulamanızdaki bir özellik için SDK olmayan arayüz kullanmaya alternatif bulamıyorsanız yeni bir herkese açık API isteğinde bulunmanız gerekir.
Android'in bu sürümündeki değişiklikler hakkında daha fazla bilgi edinmek için Android 11'deki SDK dışı arayüz kısıtlamalarında yapılan güncellemeler bölümüne bakın. Genel olarak SDK olmayan arayüzler hakkında daha fazla bilgi edinmek için SDK dışı arayüzlerle ilgili kısıtlamalar bölümüne bakın.