Davranış değişiklikleri: Android 11'i hedefleyen uygulamalar

Önceki sürümlerde olduğu gibi Android 11 de uygulamanızı etkileyebilecek davranış değişiklikleri 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 değerini 30 olarak ayarlıyorsa uygulamanızı bu davranışları doğru şekilde destekleyecek şekilde (geçerliyse) değiştirmeniz gerekir.

Android 11 üzerinde çalışan tüm uygulamaları etkileyen davranış değişikliklerinin 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 getirir:

  • Kapsamlı depolama alanı 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ç aydır bir uygulamayla etkileşimde bulunmazsa sistem, uygulamanın hassas izinlerini otomatik olarak sıfırlar.
  • Arka planda konum erişimi: Uygulamalara arka planda konum izni vermek için kullanıcılar sistem ayarlarına yönlendirilmelidir.
  • Paket görünürlüğü: Bir uygulama, cihazda yüklü uygulamaların listesini sorguladığında döndürülen liste filtrelenir.

Daha fazla bilgi edinmek için Gizlilik sayfasına bakın.

Güvenlik

Yığın işaretçi etiketleme

Değişiklik ayrıntıları

Adı Değiştir: NATIVE_HEAP_POINTER_TAGGING

Değişiklik Kimliği: 135754954

Geçiş yapma

Uygulamanızın Android 11 ile uyumluluğunu test ederken aşağıdaki ADB komutlarını kullanarak bu değişikliği açıp 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 açma/kapatma 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çilerinin artık en önemli baytta (MSB) sıfır dışında bir etiketi vardır. 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ı'nın (MTE) etkinleştirileceği gelecekteki donanımların desteklenmesi için gereklidir. Daha fazla bilgi edinmek için Etiketli İşaretçiler bölümüne bakın.

Bu özelliği devre dışı bırakmak için allowNativeHeapPointerTagging manifest dokümanlarına bakın.

Bildirim güncellemeleri

Arka plandaki özel durum iletileri engelleniyor

Güvenlik nedeniyle ve iyi bir kullanıcı deneyimi sağlamak için, özel görünümler Android 11 veya sonraki sürümleri hedefleyen bir uygulama tarafından arka planda gönderilirse sistem, özel görünümler içeren kısa mesajları engeller. Kısa mesaj isteklerine hâlâ izin verildiğini unutmayın. Bunlar, Toast.makeText() kullanılarak oluşturulan ve setView() çağrısı yapılmayan kısa iletilerdir.

Uygulamanız herhangi bir şekilde arka plandan özel görünüm içeren bir durum mesajı yayınlamaya çalışırsa sistem bu mesajı kullanıcıya göstermez. Bunun yerine sistem, logcat'te aşağıdaki mesajı günlüğe kaydeder:

W/NotificationService: Blocking custom toast from package \
  <package> due to package not in the foreground

Kısa mesaj geri çağırmaları

Bir durum mesajı (metin veya özel) göründüğünde veya kaybolduğunda bildirim almak istiyorsanız Android 11'de eklenen addCallback() yöntemini kullanın.

Text toast API değişiklikleri

Android 11 veya sonraki sürümleri hedefleyen uygulamalar, kısa mesajlar için aşağıdaki yan etkileri görür:

Bağlantı

APN veritabanına okuma erişimi kısıtlı

Değişiklik ayrıntıları

Adı Değiştir: APN_READING_PERMISSION_CHANGE_ID

Değişiklik Kimliği: 124107808

Geçiş yapma

Uygulamanızın Android 11 ile uyumluluğunu test ederken aşağıdaki ADB komutlarını kullanarak bu değişikliği açıp 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 açma/kapatma 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 Telephony sağlayıcısı APN veritabanını okumak veya bunlara erişmek için Manifest.permission.WRITE_APN_SETTINGS ayrıcalıklı izne ihtiyaç duyar. Bu izin olmadan APN veritabanına erişmeye çalışmak bir güvenlik istisnası oluşturur.

Erişilebilirlik

Manifest dosyasında TTS motorlarıyla etkileşimi bildir

Paket görünürlüğünde yapılan değişiklikler nedeniyle, Android 11'i hedefleyen ve bir metin okuma (TTS) motoruyla etkileşime giren uygulamaların manifest dosyalarına şu <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

Geçiş yapma

Uygulamanızın Android 11 ile uyumluluğunu test ederken aşağıdaki ADB komutlarını kullanarak bu değişikliği açıp 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 açma/kapatma 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şkilendirmesi olduğunu belirten bir çalışma zamanı beyanında bulunamaz. Bir AccessibilityServiceInfo nesnesinin flags özelliğine AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON 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 erişilebilirlik hizmeti meta veri dosyanızı kullanarak hizmetinizin erişilebilirlik düğmesiyle ilişkisini beyan edin. accessibilityFlags özelliği tanımınıza flagRequestAccessibilityButton değerini ekleyin. Erişilebilirlik hizmeti meta veri dosyası, res/raw/accessibilityservice.xml adresinde en çok kullanılan konumdur.

Kamera

Medya amacı işlemleri için sistem varsayılan kamera gerekir

Android 11'den itibaren, yalnızca önceden yüklenmiş sistem kamera uygulamaları aşağıdaki intent işlemlerine yanıt verebilir:

Önceden yüklenmiş birden fazla sistem kamera uygulaması varsa sistem, kullanıcıya uygulama seçmesi için bir iletişim kutusu sunar. Uygulamanızın adına resim veya video çekmek üzere belirli bir üçüncü taraf kamera uygulaması kullanmasını istiyorsanız amaç için bir paket adı veya bileşen ayarlayarak bu amaçları açıkça ifade edebilirsiniz.

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

Geçiş yapma

Uygulamanızın Android 11 ile uyumluluğunu test ederken aşağıdaki ADB komutlarını kullanarak bu değişikliği açıp 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 açma/kapatma 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ış resources.arsc dosyası içeriyorsa veya bu dosya 4 baytlık bir sınıra hizalı değilse yüklenemez. Bu koşullardan herhangi biri mevcut olduğunda bu dosya sistem tarafından bellek eşlenemez. Bellek eşlenemeyen kaynak tabloları, RAM'de bir arabelleğe okunmalıdır. Bu durum, sistem üzerinde gereksiz bellek baskısına ve cihazda RAM kullanımının büyük ölçüde artmasına yol açar.

Daha önce sıkıştırılmış bir resources.arsc dosyası kullandıysanız bunun yerine uygulama kaynaklarını küçültmek 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 da artık APK İmza Şeması v2 veya daha yeni bir sürüm kullanılarak imzalanmalıdır. 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ındaki apksigner aracını kullanabilirsiniz.

Firebase

Firebase JobDispatcher ve GCMNetworkManager

Uygulamanız API düzeyi 30 veya sonraki sürümleri 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 Firebase JobDispatcher'dan WorkManager'a taşıma ve GCMNetworkManager'dan WorkManager'a taşıma konularına bakın.

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 şu <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

Geçiş yapma

Uygulamanızın Android 11 ile uyumluluğunu test ederken aşağıdaki ADB komutlarını kullanarak bu değişikliği açıp 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 açma/kapatma 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 uygulamalar için Editor.clear her çağrıldığında artık bir null anahtarıyla OnSharedPreferenceChangeListener.onSharedPreferenceChanged için geri çağırma yapılır.

SDK dışı arayüz kısıtlamaları

Android 11, Android geliştiricileriyle yapılan ortak çalışmaya ve en son dahili testlere dayanarak kısıtlanmış SDK dışı arayüzlerin güncellenmiş listelerini içerir. Mümkün olduğunda SDK dışı arayüzleri kısıtlamadan önce herkese açık alternatiflerin kullanılabildiğinden emin oluruz.

Uygulamanız Android 11'i hedeflemiyorsa bu değişikliklerden bazıları sizi hemen etkilemeyebilir. Ancak şu anda bazı SDK olmayan arayüzleri (uygulamanızın hedef API düzeyine bağlı olarak) kullanabilirsiniz. Ancak SDK olmayan herhangi bir yöntem veya alan kullanmak her zaman uygulamanızın bozulma riski taşır.

Uygulamanızın SDK olmayan arayüz kullanıp kullanmadığından emin değilseniz öğrenmek için uygulamanızı test edebilirsiniz. Uygulamanız SDK olmayan arayüzleri kullanıyorsa SDK alternatiflerine geçiş planlamaya başlamanız gerekir. Bununla birlikte, bazı uygulamaların SDK dışı arayüzler için geçerli kullanım alanları olduğunun farkındayız. Uygulamanızdaki bir özellik için SDK dışı arayüz kullanmanın alternatifini 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 olmayan arayüz kısıtlamalarıyla ilgili güncellemeler bölümüne bakın. SDK olmayan arayüzler hakkında genel olarak daha fazla bilgi edinmek için SDK dışı arayüzlerdeki kısıtlamalar bölümüne bakın.