Uyumluluk çerçevesi değişiklikleri (Android 11)

Bu sayfada, Android 11'de (API düzeyi 30) uyumluluk çerçevesine eklenen ve uygulamaları etkileyen her 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ı flags bağımsız değişkeni içeren yeni bir herkese açık API aşırı yükleme işlevi onChange(boolean, Uri, int) mevcuttur.

Bu yeni yöntem, SDK dışı onChange() aşırı yüklenen yöntemi (tam sayı userId bağımsız değişkeni içeren) kullanan uygulamalar için herkese açık bir SDK alternatifidir.

ADMIN_APP_PASSWORD_COMPLEXITY

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 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.

APP_DATA_DIRECTORY_ISOLATION

Değişiklik Kimliği: 143937733

Varsayılan durum: Android 11'i (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 11'i hedefleyen uygulamalar artık diğer uygulamanın hedef SDK sürümünden bağımsız olarak herhangi bir uygulamanın özel veri dizinlerindeki dosyalara erişemez.

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'i (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 11'i hedefleyen uygulamalar için APN veritabanına erişmek artık Manifest.permission.WRITE_APN_SETTINGS iznine ihtiyaç duyuyor.

Bu değişiklik hakkında daha fazla bilgi edinmek için APN veritabanına kısıtlanmış okuma erişimi başlıklı makaleyi inceleyin.

BACKGROUND_RATIONALE_CHANGE_ID

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 cihazın arka planda konumuna erişmek istedikleri her seferinde geçerli bir gerekçe sağlamalı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 konulu kılavuza 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.

Editor.clear işlevi her çağrıldığında artık null anahtarıyla OnSharedPreferenceChangeListener.onSharedPreferenceChanged işlevine geri çağrı yapılır.

Bu değişiklik hakkında daha fazla bilgi edinmek için OnSharedPreferenceChangeListener için geri çağırma değişiklikleri başlıklı makaleyi inceleyin.

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'i (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Bu, startWatchingMode(String, String, AppOpsManager.OnOpChangedListener) için küçük bir davranış değişikliğidir. Bu değişiklikten önce sistem, değiştirilen işlem için geri arıyordu. Değişiklikten sonra sistem, istenen işlemi veya herhangi bir işlem belirtilmemişse tüm değiştirilen işlemleri geri arar.

CAMERA_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.

CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK

Değişiklik kimliği: 128611929

Varsayılan durum: Android 11'i (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 pop-up görünümleri engellenir başlıklı makaleyi inceleyin.

DEĞİŞTİRME_RESTRICT_SAW_INTENT

Değişiklik kimliği: 135920175

Varsayılan durum: Bu değişiklik değiştirilemez. 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 intent'ler artık kullanıcıyı ilişkili izni yönetmek için uygulamaya özel bir ekrana yönlendirmiyor. Bunun yerine kullanıcı, izin isteyen tüm uygulamaları yönetebileceği bir ekrana yönlendirilir.

CHANGE_TEXT_TOASTS_IN_THE_SYSTEM

Değişiklik kimliği: 147798919

Varsayılan durum: Android 11'i (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şturulmaktadır. Bu sayede uygulamalar, arka planda özel durum mesajları yayınlama kısıtlamalarını atlatabilir.

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 kullanır ve kapsamlı depolamayı devre dışı bırakamaz.

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ında yapılan değişiklikler hakkında daha fazla bilgi edinmek için Android 11'de Android depolama alanında yapılan değişikliklerle ilgili sayfada Kapsamlı depolama alanı bölümüne bakı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 durumun hata vermeden geçmesine izin veriyordu. Bu, özelliğin her zaman hata oluşturduğundan özelliğin null veya eksik olduğu durumları içermez.

FILTER_APPLICATION_QUERY

Değişiklik Kimliği: 135549675

Varsayılan durum: Android 11'i (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Artık uygulamaların, cihazdaki diğer uygulamalarla ilgili ayrıntıları alabilmesi için kullanmayı planladıkları paketleri ve intent'leri bildirmesi gerekiyor. Bu tür beyanlar, uygulamanın manifest dosyasında <queries> etiketi kullanılarak yapılmalıdır.

Android 11'de yüklü diğer uygulamaları nasıl sorgulayacağınız ve bunlarla nasıl etkileşime geçeceğiniz 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 kullanır ve kapsamlı depolamayı devre dışı bırakamaz.

Bununla birlikte, uygulamanız hâlâ Android 10 (API düzeyi 29) veya önceki sürümleri hedefliyorsa bu değişikliği açarak 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ında yapılan değişiklikler hakkında daha fazla bilgi edinmek için Android 11'de Android depolama alanında yapılan değişikliklerle ilgili sayfada Kapsamlı depolama alanı bölümüne bakın.

GET_DATA_CONNECTION_STATE_R_VERSION

Değişiklik Kimliği: 148535736

Varsayılan durum: Android 11'i (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

PreciseDataConnectionState#getDataConnectionState için SDK sürümünü kontrol etmek

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'i (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 uygulamalarda getProvider(String) artık güvenlik istisnası atılmaz.

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 etmek için.

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) için SDK sürümünü kontrol etmek istiyorsanız

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, uygulamanın manifest dosyasında application veya instrumentation etiketi eksik olduğunda artık hata verilir.

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 uygulamalarda, yerel yığın tahsislerinde artık en önemli baytta sıfır olmayan bir etiket bulunuyor.

Daha fazla bilgi için Yığın işaretçisi etiketleme başlıklı makaleyi inceleyin.

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, herhangi bir işlemin TelephonyManager.listen(PhoneStateListener, int) aracılığıyla kaydedebileceği PhoneStateListener nesnesi sayısı artık sınırlandırılmıştır. 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, sorunlu 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'i (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 yansıma katmanı kullanamaz.

PROCESS_CAPABILITY_CHANGE_ID

Değişiklik kimliği: 136274596

Varsayılan durum: Android 11'i (API düzeyi 30) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 11'i hedefleyen uygulamalarda, Context.BIND_INCLUDE_CAPABILITIES işaretçisi artık kullanım sırasındaki özellikleri istemci işleminden bağlı bir hizmete aktarmak için kullanılabilir.

REMOVE_ANDROID_TEST_BASE

Değişiklik kimliği: 133396946

Varsayılan durum: Android 11'i (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_BUTTON_CHANGE

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ı beyan etme başlıklı makaleyi inceleyin.

RESOURCES_ARSC_COMPRESSED

Değişiklik Kimliği: 132742131

Varsayılan durum: Android 11'i (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ış bir resources.arsc dosyası içeriyorsa veya bu dosya 4 baytlık bir sınıra hizalanmamışsa yüklenemez.

Bu değişiklik hakkında daha fazla bilgi edinmek için Sıkıştırılmış kaynak dosyaları başlıklı makaleyi inceleyin.

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üncellemelerini ele alan sayfada Doküman erişim kısıtlamaları bölümüne bakın.

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 untrusted_app_R-targetSDk SELinux alanına erişimini engeller. 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 bir uygulamada bu değişikliği devre dışı bırakmamanız gerekir. Aksi takdirde uygulama çalışmaz.

Bu değişiklik, paylaşılan kullanıcı kimliği kullanan uygulamalarda geçerli değildir.

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, hiçbiri çağırana gösterilmeyen çeşitli nedenlerle atılabilir.

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 bu istisna, Android 11'den önceki kaynakta mevcut olan 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ı, desteği sonlandırılan Settings.Secure.LOCATION_MODE ayarını değiştirmek için artık DevicePolicyManager.setSecureSetting(ComponentName, String, String) kullanamaz. Bunun yerine DevicePolicyManager.setLocationEnabled(ComponentName, boolean) kullanmalıdır.