Bu sayfada, Android 11'de (API düzeyi 30) uyumluluk çerçevesine eklenen ve uygulamayı etkileyen her bir davranış değişikliği açıklanmaktadır. Android 11'i hedeflemeye hazırlanırken uygulamanızı test etmek ve hata ayıklamak için bu listeyi geliştirici seçenekleri ve ADB komutlarıyla birlikte kullanın.
İÇERİK_OBSERVER_BAYRAKLARI_EKLEYİN
Değişiklik Kimliği: 150939131
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalar için tam sayı olan flags
bağımsız değişkeni içeren yeni bir herkese açık API aşırı yüklemesi onChange(boolean, Uri, int)
eklendi.
Bu yeni yöntem, tamsayı userId
bağımsız değişkeni içeren SDK olmayan onChange()
aşırı yüklenmiş yöntemini kullanan uygulamalar için herkese açık bir SDK alternatifidir.
YÖNETİCİ_UYGULAMA_ŞİFRESİ_KARMAŞIK
Değişiklik Kimliği: 123562444
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen yönetici uygulamaları için, bir uygulama o anda atanmış olan şifre kalitesiyle alakalı olmayan bir şifre gereksinimi belirlediğinde hata mesajı alırsınız. Örneğin, şifre kalitesi DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED
olarak ayarlandığında bir uygulama minimum şifre uzunluğu belirleyemez. Bu durumda, minimum şifre uzunluğunu belirlemeye çalışmadan önce uygulamanın önce setPasswordQuality()
yöntemini, ardından da setPasswordMinimumLength()
yöntemini çağırması gerekir.
Ayrıca, Android 11'i hedefleyen bir yönetici uygulaması şifre kalitesini düşürdüğünde, artık geçerli olmayan mevcut şifre gereksinimleri varsayılan değerlerine sıfırlanır.
UYGULAMA_VERİSİ_DİZİN_ISOLATION
Değişiklik Kimliği: 143937733
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalar, hedef SDK sürümü ne olursa olsun artık hiçbir uygulamanın gizli veri dizinlerindeki dosyalara erişemeyecek.
Daha fazla bilgi edinmek için Özel dizinlere erişim bölümüne bakın.
APN_READING_PERMISSION_CHANGE_ID
Değişiklik Kimliği: 124107808
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalarda APN veritabanına erişmek için artık Manifest.permission.WRITE_APN_SETTINGS
izni gerekiyor.
Bu değişiklik hakkında daha fazla bilgi edinmek için APN veritabanına kısıtlı okuma erişimi sayfasına göz atın.
ARKA PLAN_RATIONALE_DEĞİŞİKLİK_KİMLİĞİ
Değişiklik Kimliği: 147316723
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Uygulamalar artık arka planda cihazın konumuna erişmek için her istekte bulunduklarında geçerli bir gerekçe sunmalıdır.
Bu değişiklik hakkında daha fazla bilgi edinmek için Android 11'de konumla ilgili gizlilik değişikliklerini ele alan Android 11'de arka planda konuma erişme rehberine bakın.
CALLBACK_ON_CLEAR_CHANGE
Değişiklik Kimliği: 119147584
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Her Editor.clear
çağrıldığında, artık bir null
tuşuyla OnSharedPreferenceChangeListener.onSharedPreferenceChanged
numarasına geri arama yapılır.
Bu değişiklik hakkında daha fazla bilgi edinmek için OnSharedPreferenceChangeListener için geri çağırma değişiklikleri bölümüne bakın.
CALLBACK_ON_MORE_ERROR_CODE_CHANGE
Değişiklik Kimliği: 130595455
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Hata kodları artık updateAvailableNetworks(List,
Executor,
Consumer)
ve setPreferredOpportunisticDataSubscription(int, boolean, Executor,
Consumer)
için genişletildi.
CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE
Değişiklik Kimliği: 148180766
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Bu, startWatchingMode(String, String,
AppOpsManager.OnOpChangedListener)
olarak yapılan küçük bir davranış değişikliğidir.
Bu değişiklikten önce sistem, geçişi yapılan işlem için geri çağrıda bulunmuştur. Değişiklikten sonra, sistem herhangi bir işlem belirtilmiyorsa işlem için asıl istenen işlemi veya tüm geçişli operasyonları geri çağırır.
CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID [KAMERA_MICROPHONE_CAPABILITY_CHANGE_ID]
Değişiklik Kimliği: 136219221
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalar için ön plan hizmetlerine yalnızca kullanım sırasında kamera ve mikrofon özellikleri R.attr.foregroundServiceType
sırasıyla ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA
ve ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE
olarak yapılandırıldığında manifest dosyasında kullanılabilir. Android'in önceki sürümlerinde ön plan hizmetlerine otomatik olarak kamera ve mikrofon özellikleri sunuluyordu.
Bu değişiklik hakkında daha fazla bilgi edinmek için Android 11'deki ön plan hizmeti türleri bölümünü inceleyin.
DEĞİŞTİRME_ARKA_GERİ_ÖZEL_TOAST_ENGELLEME
Değişiklik Kimliği: 128611929
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Uygulamalar artık arka planda özel kısa iletiler yayınlayamaz. Ancak uygulamalar arka planda Toast.makeText(Context, CharSequence,
int)
yöntemini ve varyantlarını kullanarak kısa mesaj yayınlamaya devam edebilir.
Bu değişiklik hakkında daha fazla bilgi edinmek için Özel durum mesajı görünümleri engelleniyor bölümüne bakın.
DEĞİŞTİRME_RESTRICT_SAW_INTENT
Değişiklik Kimliği: 135920175
Varsayılan durum: Bu değişiklik açılamaz. Yalnızca uyumluluk çerçevesi tarafından günlüğe kaydedilir.
android.settings.MANAGE_APP_OVERLAY_PERMISSION
işlemini ve package
veri URI şemasını kullanan amaçlar, artık kullanıcıyı ilişkili izni yönetmek için uygulamaya özel bir ekrana yönlendirmemektedir. Bunun yerine kullanıcı, izin isteyen tüm uygulamaları yönetebileceği bir ekrana yönlendirilir.
CHANGE_TEXT_TOASTS_IN_THE_SİSTEM
Değişiklik Kimliği: 147798919
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Metin kısa mesajları artık uygulama içi yerine SystemUI tarafından oluşturuluyor. Bu sayede uygulamalar, arka planda özel durum mesajları yayınlama kısıtlamalarını atlatıyor.
DEFAULT_SCOPED_STORAGE
Değişiklik Kimliği: 149924527
Varsayılan durum: Tüm uygulamalar için etkindir.
Android 11'i hedefleyen tüm uygulamalar artık varsayılan olarak kapsamlı depolama alanını kullanır ve kapsamlı depolama alanının kapsamı dışında kalmayı seçemez.
Ancak bu değişikliği kapatarak uygulamanızın hedef SDK sürümü ve manifest işareti değerleri ne olursa olsun kapsamlı depolama alanı olmadan uygulamanızı test edebilirsiniz.
Android 11'de kapsamlı depolama alanı ile ilgili değişiklikler hakkında daha fazla bilgi edinmek için Android 11'de Android depolama alanında yapılan değişiklikler hakkındaki sayfanın Kapsamlı depolama bölümüne göz atın.
EMPTY_INTENT_ACTION_CATEGORY
Değişiklik Kimliği: 151163173
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalar için amaç filtresi action
veya category
boş dizeyse sistem artık hata bildiriyor. Android 11'den önceki platformdaki bir hata, bu destek kaydının hata vermeden geçmesini sağlıyordu. Bu durum, özelliğin null veya eksik olduğu durumları kapsamaz. Çünkü bu durum, her zaman hataya neden olur.
FİLTRE_UYGULAMA_QUERY
Değişiklik Kimliği: 135549675
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Bir cihazdaki diğer uygulamalarla ilgili ayrıntıları görebilmek için artık uygulamaların, kullanmak istedikleri paketleri ve amaçları beyan etmeleri gerekir. Bu tür beyanlar, uygulamanın manifest dosyasındaki <queries>
etiketi kullanılarak yapılmalıdır.
Android 11'de yüklü diğer uygulamaları nasıl sorgulayacağınız ve bu uygulamalarla nasıl etkileşimde bulunacağınız hakkında daha fazla bilgi edinmek için paket görünürlüğü gizlilik sayfasına bakın.
FORCE_ENABLE_SCOPED_STORAGE
Değişiklik Kimliği: Değer: 132649864
Varsayılan durum: Tüm uygulamalar için devre dışıdır.
Android 11'i hedefleyen tüm uygulamalar artık varsayılan olarak kapsamlı depolama alanını kullanır ve kapsamlı depolama alanının kapsamı dışında kalmayı seçemez.
Bununla birlikte, uygulamanız hâlâ Android 10 (API düzeyi 29) veya önceki sürümleri hedefliyorsa bu değişikliği etkinleştirerek uygulamanızın hedef SDK sürümüne ve manifest işaret değerlerine bakılmaksızın uygulamanızı kapsamlı depolama alanıyla test edebilirsiniz.
Android 11'de kapsamlı depolama alanı ile ilgili değişiklikler hakkında daha fazla bilgi edinmek için Android 11'de Android depolama alanında yapılan değişiklikler hakkındaki sayfanın Kapsamlı depolama bölümüne göz atın.
GET_DATA_CONNECTION_STATE_R_VERSION
Değişiklik Kimliği: 148535736
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
PreciseDataConnectionState#getDataConnectionState
için SDK sürümünü kontrol edin.
GET_DATA_STATE_R_VERSION
Değişiklik Kimliği: 148534348
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
getDataState()
'in SDK sürümünü kontrol edin.
GET_Sağlayıcı_SECURITY_EXCEPTIONS
Değişiklik Kimliği: 150935354
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
getProvider(String)
, Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için artık herhangi bir güvenlik istisnası uygulamamaktadır.
GET_TARGET_SDK_VERSION_CODE_CHANGE
Değişiklik Kimliği: 145147528
Varsayılan durum: Android 10 (API düzeyi 29) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
SmsManager.sendResolverResult()
yönteminin SDK sürümünü kontrol edin.
GWP_ASAN
Değişiklik Kimliği: 135634846
Varsayılan durum: Tüm uygulamalar için devre dışıdır.
Uygulamalarda örneklenmiş yerel bellek hatası algılamayı etkinleştirir.
Bu değişiklik hakkında daha fazla bilgi edinmek için GWP-ASan kılavuzuna bakın.
HIDE_MAXTARGETSDK_P_HIDDEN_APIS
Değişiklik Kimliği: 149997251
Varsayılan durum: Android 10 (API düzeyi 29) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 10 (API düzeyi 29) veya sonraki sürümleri hedefleyen uygulamalar, Android 10'un (API düzeyi 29) max-target-p
(greylist-max-p
) listesindeki tüm SDK dışı arayüzlere erişimi kaldırır.
HIDE_MAXTARGETSDK_Q_HIDDEN_APIS
Değişiklik Kimliği: 149994052
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar, Android 11'in (API düzeyi 30) max-target-q
(greylist-max-q
) listesindeki tüm SDK dışı arayüzlere erişimi kaldırır.
Bu değişiklik hakkında daha fazla bilgi edinmek için Android 11'de artık engellenen SDK dışı arayüzler bölümüne bakın.
DİNLEYEN KOD_DEĞİŞİKLİĞİ
Değişiklik Kimliği: 147600208
Varsayılan durum: Android 10 (API düzeyi 29) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
TelephonyManager.listen(PhoneStateListener,
int)
'in SDK sürümünü kontrol edin.
MISSING_APP_TAG
Değişiklik Kimliği: 150776642
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalarda artık bir uygulamanın manifest dosyasında application
veya instrumentation
etiketi eksik olduğunda hata bildiriliyor.
NATIVE_HEAP_POINTER_TAGGING
Değişiklik Kimliği: 135754954
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalar için yerel yığın ayırmaları artık en önemli baytta sıfır dışında bir etikete sahiptir.
Daha fazla bilgi edinmek için Yığın işaretçi etiketleme bölümüne bakın.
PHONE_STATE_LISTENER_LIMIT_CHANGE_ID
Değişiklik Kimliği: 150880553
Varsayılan durum: Tüm uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalarda artık herhangi bir işlemin TelephonyManager.listen(PhoneStateListener, int)
aracılığıyla kaydedebileceği PhoneStateListener
nesnesi sayısı sınırı var.
Varsayılan sınır 50'dir. Bu sınır, uzak cihaz yapılandırması güncellemeleriyle değiştirilebilir.
Bu sınır, rahatsız edici işlem çok fazla dinleyici kaydetmeye çalıştığında TelephonyManager.listen(PhoneStateListener, int)
tarafından atılan bir IllegalStateException
kullanılarak uygulanır.
PREVENT_META_REFLECTION_BLACKLIST_ERİŞİMİ
Değişiklik Kimliği: 142365358
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalar, kısıtlanmış SDK dışı arayüzlere erişmek için artık ek bir düşünme katmanı kullanamayacak.
İŞLEM_CAPABILITY_DEĞİŞİKLİK_KİMLİĞİ
Değişiklik Kimliği: 136274596
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalarda Context.BIND_INCLUDE_CAPABILITIES
işareti, kullanımdaki özellikleri istemci işleminden bağlı bir hizmete iletmek için kullanılabilir.
KALDIR_ANDROID_TEST_BASE
Değişiklik Kimliği: 133396946
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen uygulamalarda, android.test.runner
uygulamasına bağlı değilse (android.test.base
kitaplığındaki sınıflara bağlı olduğundan) android.test.base
kitaplığı kaldırılmıştır.
REQUEST_ACCESSIBILITY_DÜĞMESİ_DEĞİŞİKLİĞİ
Değişiklik Kimliği: 136293963
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen erişilebilirlik hizmetleri için artık erişilebilirlik hizmeti meta veri dosyasında FLAG_REQUEST_ACCESSIBILITY_BUTTON
işareti belirtilmelidir.
Aksi takdirde, işaret yoksayılır.
Bu değişiklik hakkında daha fazla bilgi edinmek için Meta veri dosyasında erişilebilirlik düğmesi kullanımını bildirme bölümüne bakın.
KAYNAKLAR_ARSC_COMPRESSED
Değişiklik Kimliği: 132742131
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i (API düzeyi 30) hedefleyen uygulamalar, sıkıştırılmış resources.arsc
dosyası içeriyorsa veya bu dosya 4 baytlık sınırla hizalı değilse yüklenemez.
Bu değişiklik hakkında daha fazla bilgi edinmek için Sıkıştırılmış kaynak dosyaları bölümüne bakın.
RESTRICT_STORAGE_ACCESS_FRAMEWORK
Değişiklik Kimliği: 141600225
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Uygulamanız Android 11'i hedefliyorsa ve Depolama Alanı Erişim Çerçevesi'ni (SAF) kullanıyorsa artık ACTION_OPEN_DOCUMENT
ve ACTION_OPEN_DOCUMENT_TREE
amaç işlemlerini kullanarak belirli dizinlere erişemezsiniz. Bu değişiklikler hakkında daha fazla bilgi edinmek için Android 11'de depolama alanıyla ilgili gizlilik güncellemelerinin açıklandığı sayfadaki Doküman erişimi kısıtlamaları bölümünü inceleyin.
SELINUX_LATEST_DEĞİŞİKLİKLERİ
Değişiklik Kimliği: 143539591
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Bu değişiklik, uygulamaların Unknown_app_R-targetSDk SELinux alanına erişmesini sağlar.
Bu, uyumluluk çerçevesinde yapılan temel değişikliklerden biridir ve uygulamaların, targetSDKVersion
ayarını değiştirmeden targetSdkVersion
tarafından denetlenen diğer değişiklikleri açıp kapatmalarına olanak tanır. Bu nedenle, Android 11'i hedefleyen uygulamalar için bu değişikliği devre dışı bırakmamalısınız. Aksi takdirde uygulama çalışmaz.
Bu değişikliğin, paylaşılan bir kullanıcı kimliği kullanan uygulamalar üzerinde herhangi bir etkisi yoktur.
THROW_SECURITY_EXCEPTIONS
Değişiklik Kimliği: 147340954
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'den önce bir SecurityException
, izin hatası nedeniyle yalnızca setEnabled
API'leri tarafından yayınlanıyordu. Android 11'de bu durum artık geçerli değildir ve SecurityException
, çeşitli nedenlerle atılabilir. Bunların hiçbiri arayana gösterilmez.
Mevcut API davranışını korumak amacıyla, Android 11'i hedeflemeyen bir uygulamada eski bir izin hatası veya kullanıcıyı yaptırım hatası oluşursa istisna, Android 11'den önceki kaynakta bulunan bir IllegalStateException
'ye zorunlu kılınır.
USE_SET_LOCATION_ENABLED
Değişiklik Kimliği: 117835097
Varsayılan durum: Android 11 (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.
Android 11'i hedefleyen yönetici uygulamaları, kullanımdan kaldırılan Settings.Secure.LOCATION_MODE
ayarını değiştirmek için artık DevicePolicyManager.setSecureSetting(ComponentName, String, String)
aracını kullanamayacak. Bunun yerine DevicePolicyManager.setLocationEnabled(ComponentName, boolean)
kullanılmalıdır.