Uyumluluk çerçevesiyle ilgili değişiklikler (Android 12)

Şekil 1. Geliştirici seçeneklerindeki Uygulama Uyumluluğu Değişiklikleri ekranında, geçiş yapabileceğiniz değişiklikler listelenir.

Bu sayfada, Android 12'deki (API düzeyi 31) uyumluluk çerçevesinin bir parçası olan her bir davranış değişikliği açıklanmaktadır. Android 12'yi desteklemeye ve 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.

Uyumluluk çerçevesi araçlarını kullanarak yapabileceğiniz bazı işlemler şunlardır:

  • Uygulamanın targetSdkVersion değerini gerçekten değiştirmeden hedeflenen değişiklikleri test edin. Mevcut uygulamanız üzerindeki etkisini değerlendirmek amacıyla belirli hedeflenmiş davranış değişikliklerini zorunlu kılmak için açma/kapatma düğmelerini kullanabilirsiniz.
  • Testinizde yalnızca belirli değişikliklere odaklanın. Açma/kapatma anahtarları, hedeflenen tüm değişiklikleri bir defada ele almak yerine, test etmek istedikleriniz dışındaki tüm hedeflenen değişiklikleri devre dışı bırakmanıza olanak tanır.
  • Adb arasındaki açma/kapatmaları yönetin. Otomatik test ortamınızdaki açılıp kapatılabilir değişiklikleri etkinleştirmek ve devre dışı bırakmak için adb komutlarını kullanabilirsiniz.
  • Standart değişiklik kimliklerini kullanarak daha hızlı hata ayıklayın. Geçiş yapılabilir değişikliklerin her biri, günlük çıktısında kök nedendeki hataları hızlıca ayıklamak için kullanabileceğiniz benzersiz bir kimliğe ve ada sahiptir.

Bu kullanım alanlarının her biri için araçların kullanımıyla ilgili ayrıntılı bilgi için Uyumluluk çerçevesi araçları bölümüne bakın.

Uyumluluk çerçevesine dahil edilen davranış değişiklikleri

Bu bölümdeki listede, Android 12'deki uyumluluk çerçevesine dahil edilen her bir davranış değişikliği açıklanmaktadır.

Değişiklikler listesini Varsayılan Durum'a göre filtreleyebilirsiniz.

Android 12'deki uyumluluk çerçevesine eklenen davranış değişiklikleri

ALWAYS_SANDBOX_DISPLAY_APIS

Değişiklik Kimliği: 185004937
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

Etkinleştirildiğinde, pencere modundan bağımsız olarak Display API korumalı alana alma işlemini pakete uygular. Display API'leri her zaman uygulama sınırlarını sağlar.

Bu değişiklik hakkında daha fazla bilgi edinmek için Android 12 davranış değişiklikleri sayfasındaki Kullanımdan kaldırılan görüntüleme yöntemleri bölümüne bakın.

AUTOFILL_NON_TEXT_REQUIRES_ON_RECEIVE_CONTENT_LISTENER

Değişiklik Kimliği: 163400105
Varsayılan Durum: Android 12 (API düzeyi 32) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12'den itibaren platform, artırılmış otomatik doldurma çerçevesini kullanarak metin dışındaki öneriler (ör. resimler) sağlayabilir (bkz. otomatik doldurma hizmetleri). Bir uygulamanın bu önerileri işleyebilmesi için normalde OnReceiveContentListener API'yi uygulaması gerekir.

Daha önce InputConnection.commitContent(InputContentInfo, int, Bundle) API'yi uygulamış uygulamaların bu API'nin daha kolay benimsenmesini sağlamak amacıyla, OnReceiveContentListener henüz uygulama tarafından uygulanmamışsa bu API'yi yedek olarak yeniden kullanırız. Bu yedek, yalnızca Android 12'de (API düzeyi 31) etkinleştirilir. Bu değişiklik kimliği, Android 12 (API düzeyi 32) ve sonraki sürümleri hedefleyen uygulamaların, metin olmayan önerileri kabul etmek için OnReceiveContentListener API'sini uygulaması gerektiği şekilde yedeği devre dışı bırakır.

BLOCK_FLAG_SLIPPERY

Değişiklik Kimliği: 157929241
Varsayılan Durum: Tüm uygulamalar için etkindir.

Android 12 (API düzeyi 31) üzerinde çalışan uygulamalarda, FLAG_SLIPPERY öğesinin uygulamadaki herhangi bir pencereyle kullanılıp kullanılmadığını kontrol eder. Bu işaretin, desteklenmeyen bir alan olduğundan muhtemelen yalnızca sistem bileşenleri tarafından kullanılmasını bekleriz. Bu durumda video kısıtlanır.

BLOCK_GPS_STATUS_USAGE

Değişiklik Kimliği: 144027538
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için tüm GpsStatus API kullanımı, GnssStatus API'leriyle değiştirilmelidir.

BLOCK_IMMUTABLE_PENDING_INTENTS

Değişiklik Kimliği: 171317480
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için konum API'lerine geçirilen sabit PendingIntent nesneleri, IllegalArgumentException.

BLOCK_PENDING_INTENT_SYSTEM_API_USAGE

Değişiklik Kimliği: 169887240
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

LocationRequest sistem API'leri, Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için PendingIntent konum istekleriyle kullanılamaz.

BLOCK_UNTRUSTED_TOUCHES

Değişiklik Kimliği: 158002302
Varsayılan Durum: Tüm uygulamalar için etkindir.

Android 12, sistem güvenliğini ve iyi bir kullanıcı deneyimini korumak için uygulamaların, yer paylaşımının uygulamayı güvenli olmayan bir şekilde engellediği dokunma etkinliklerini tüketmesini engeller.

Bu değişiklik hakkında daha fazla bilgi edinmek için Güvenilmeyen dokunma etkinlikleri engellendi başlıklı makaleye bakın.

CALL_ACTIVITY_RESULT_BEFORE_RESUME

Değişiklik Kimliği: 78294732
Varsayılan Durum: Android 12 (API düzeyi 32) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 32) ve sonraki sürümleri hedefleyen uygulamalar için etkinlik sonucunun yaşam döngüsünü düzelterek bir etkinliğin sonucu devam ettirmeden hemen önce almasını garanti eder.

CAMERA_MIC_INDICATORS_NOT_PRESENT

Değişiklik Kimliği: 162547999
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

Bu cihazın kamera ve mikrofon göstergelerini desteklediğini belirtir. Değişiklik Kimliği olmadığında CompatChanges#isChangeEnabled yöntemi true değerini döndürdüğünden, varsa false olur.

CANNOT_INSTALL_WITH_BAD_PERMISSION_GROUPS

Değişiklik Kimliği: 146211400
Varsayılan Durum: Android 12 (API düzeyi 32) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 32) ve sonraki sürümleri hedefleyen uygulamalar için paket yöneticisi, hatalı biçimlendirilmiş izin grupları varsa paket yüklemez. İzin grupları yalnızca bir sertifikayı paylaşan uygulamalar arasında paylaşılmalıdır. Bir izin bir gruba aitse bu grup da tanımlanmalıdır.

CHANGE_ID_AUTH_STATE_DENIED

Değişiklik Kimliği: 181350407
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen istemci uygulamaları için, yetkilendirme reddedildi durumunda olup bir nano uygulamaya mesaj göndermeye çalıştıklarında SecurityException hatası verilir.

CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION

Değişiklik Kimliği: 136069189
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için HIGH_SAMPLING_RATE_SENSORS izni olmayan, hata ayıklama modunda çalıştırılan ve 200 Hz'den daha hızlı örnekleme hızları isteyen uygulamalar SecurityException hatası verir.

DELIVER_HISTORICAL_LOCATIONS

Değişiklik Kimliği: 73144566
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için konum istemcileri, bazı durumlarda geçmiş konumları (şimdiki zamandan önce) alabilir.

DISPLAY_INFO_NR_ADVANCED_SUPPORTED

Değişiklik Kimliği: 181658987
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için TelephonyDisplayInfo'teki değişiklikler için geriye dönük uyumluluk sağlar.

DISPLAY_MODE_RETURNS_PHYSICAL_REFRESH_RATE

Değişiklik Kimliği: 170503758
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Platform, Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için daha çok tercih ediliyorsa (örneğin, uygulama Surface.setFrameRate(float, int) çağrısında bulunursa) uygulamanın kare hızını daraltarak yenileme hızının bir bölenini içerebilir. Uygulamalar, kısıtlanmış kare hızında Choreographer.postFrameCallback(Choreographer.FrameCallback) geri çağırmaya ve geri basınca maruz kalmaya devam eder. Uygulamalar, ekranın yenileme hızını öğrenmek için Display.getRefreshRate() ve Display.Mode.getRefreshRate() kullanır. Display.getRefreshRate(), uygulamaların kare hızını doğru şekilde yapabilmesi için fiziksel görüntü yenileme hızını değil, her zaman uygulamanın kare hızını döndürür. Display.Mode.getRefreshRate(), önceki bir sürüme derlenmişse uygulama kare hızını döndürür. Android 12'den (API düzeyi 31) itibaren ise fiziksel ekranın yenileme hızını döndürür.

DOWNSCALED

Değişiklik Kimliği: 168419799
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

Bu değişiklik, uygulama başına arabellek ölçeklendirme değişikliklerinin tamamının bekçiliğidir. Bu değişikliğin etkinleştirilmesi, aşağıdaki ölçeklendirme faktörlerinin uygulanmasına olanak tanır:

Bir uygulama paketi için bu değişiklik etkinleştirildiğinde, uygulama zorla yeniden boyutlandırılarak en yüksek, etkin ölçeklendirme faktörüne ayarlanır. Örneğin, hem% 80 hem de% 70 (DOWNSCALE_80 ve DOWNSCALE_70) etkinse %80 kullanılır.

DOWNSCALE_30

Değişiklik Kimliği: 189970040
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

DOWNSCALED etkinleştirildiğinde, bir paket için bu değişikliğin etkinleştirilmesi, uygulamayı gerçek ekranın dikey ve yatay çözünürlüğünün% 30'u olan bir ekranda çalıştığını varsaymaya zorlar.

DOWNSCALE_35

Değişiklik Kimliği: 189969749
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

DOWNSCALED etkinleştirildiğinde, bir paket için bu değişikliğin etkinleştirilmesi, uygulamayı gerçek ekranın dikey ve yatay çözünürlüğünün% 35'i olan bir ekranda çalıştığını varsaymaya zorlar.

DOWNSCALE_40

Değişiklik Kimliği: 189970038
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

DOWNSCALED etkinleştirildiğinde, bir paket için bu değişikliğin etkinleştirilmesi, uygulamayı gerçek ekranın dikey ve yatay çözünürlüğünün% 40'ı olan bir ekranda çalıştığını varsaymaya zorlar.

DOWNSCALE_45

Değişiklik Kimliği: 189969782
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

DOWNSCALED etkinleştirildiğinde, bir paket için bu değişikliğin etkinleştirilmesi, uygulamayı gerçek ekranın dikey ve yatay çözünürlüğünün% 45'i kadar olan bir ekranda çalıştığını varsaymaya zorlar.

DOWNSCALE_50

Değişiklik Kimliği: 176926741
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

DOWNSCALED etkinleştirildiğinde, bir paket için bu değişikliğin etkinleştirilmesi, uygulamayı gerçek ekranın dikey ve yatay çözünürlüğünün% 50'si olan bir ekranda çalıştığını varsaymaya zorlar.

DOWNSCALE_55

Değişiklik Kimliği: 189970036
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

DOWNSCALED etkinleştirildiğinde, bir paket için bu değişikliğin etkinleştirilmesi, uygulamayı gerçek ekranın dikey ve yatay çözünürlüğünün% 55'i kadar olan bir ekranda çalıştığını varsaymaya zorlar.

DOWNSCALE_60

Değişiklik Kimliği: 176926771
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

DOWNSCALED etkinleştirildiğinde, bir paket için bu değişikliğin etkinleştirilmesi, uygulamayı gerçek ekranın dikey ve yatay çözünürlüğünün% 60'ı olan bir ekranda çalıştığını varsaymaya zorlar.

DOWNSCALE_65

Değişiklik Kimliği: 189969744
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

DOWNSCALED etkinleştirildiğinde, bir paket için bu değişikliğin etkinleştirilmesi, uygulamayı gerçek ekranın dikey ve yatay çözünürlüğünün% 65'i olan bir ekranda çalıştığını varsaymaya zorlar.

DOWNSCALE_70

Değişiklik Kimliği: 176926829
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

DOWNSCALED etkinleştirildiğinde, bir paket için bu değişikliğin etkinleştirilmesi, uygulamayı gerçek ekranın dikey ve yatay çözünürlüğünün% 70'i olan bir ekranda çalıştığını varsaymaya zorlar.

DOWNSCALE_75

Değişiklik Kimliği: 189969779
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

DOWNSCALED etkinleştirildiğinde, bir paket için bu değişikliğin etkinleştirilmesi, uygulamayı gerçek ekranın dikey ve yatay çözünürlüğünün% 75'i olan bir ekranda çalıştığını varsaymaya zorlar.

DOWNSCALE_80

Değişiklik Kimliği: 176926753
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

DOWNSCALED etkinleştirildiğinde, bir paket için bu değişikliğin etkinleştirilmesi, uygulamayı gerçek ekranın dikey ve yatay çözünürlüğünün% 80'i olan bir ekranda çalıştığını varsaymaya zorlar.

DOWNSCALE_85

Değişiklik Kimliği: 189969734
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

DOWNSCALED etkinleştirildiğinde, bir paket için bu değişikliğin etkinleştirilmesi, uygulamayı gerçek ekranın dikey ve yatay çözünürlüğünün% 85'i kadar olan bir ekranda çalıştığını varsaymaya zorlar.

DOWNSCALE_90

Değişiklik Kimliği: 182811243
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

DOWNSCALED etkinleştirildiğinde, bir paket için bu değişikliğin etkinleştirilmesi, uygulamayı gerçek ekranın dikey ve yatay çözünürlüğünün% 90'ı olan bir ekranda çalıştığını varsaymaya zorlar.

DO_NOT_DOWNSCALE_TO_1080P_ON_TV

Değişiklik Kimliği: 157629738
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen Android TV uygulamalarının, 1080p'den daha büyük pencere boyutları da dahil olmak üzere tüm pencere boyutlarını işlemesi beklenir. Android'in önceki sürümlerini hedefleyen uygulamalar, Windows'un 1080p'den daha yüksek çözünürlüğe sahip olmasını beklemez. Bu nedenle, gerektiğinde Windows'un ölçeği 1080p'ye düşürülür.

DROP_CLOSE_SYSTEM_DIALOGS

Değişiklik Kimliği: 174664120
Varsayılan Durum: Tüm uygulamalar için etkindir.

Uygulamalar ve sistemle etkileşimde bulunurken kullanıcı kontrolünü iyileştirmek amacıyla ACTION_CLOSE_SYSTEM_DIALOGS intent işlemi Android 12 itibarıyla kullanımdan kaldırılmıştır.

Bu değişiklik hakkında daha fazla bilgi edinmek için Uygulamalar sistem iletişim kutularını kapatamıyor başlıklı makaleye bakın.

ENABLE_CHECKS_FOR_PRIVATE_FILES

Değişiklik Kimliği: 172100307
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar, medya sağlayıcı kullanarak gizli dosya ekleyemez veya güncelleyemez.

ENABLE_DEFERRED_SCAN

Değişiklik Kimliği: 180326732
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

MediaProvider#update() kapsamında tetiklenen taramayı ertelemek için bu seçeneği etkinleştirin.

ENABLE_GET_CALL_STATE_PERMISSION_PROTECTION

Değişiklik Kimliği: 157233955
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için TelecomManager#getCallState, TelephonyManager.getCallStateForSubscription() ve TelephonyCallback.CallStateListener gibi API sorgulamalarında ve çağrı durumu bildirmede READ_PHONE_STATE korumasını etkinleştirir.

ENABLE_GET_PHONE_ACCOUNT_PERMISSION_PROTECTION

Değişiklik Kimliği: 183407956
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için getPhoneAccount(PhoneAccountHandle) sisteminde READ_PHONE_NUMBERS veya READ_PRIVILEGED_PHONE_STATE korumalarını etkinleştirir.

ENABLE_INCLUDE_ALL_VOLUMES

Değişiklik Kimliği: 182734110
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

MediaProvider#query içindeki bağlantısı kesilmeyen bir birime ait dosyaların veritabanı satırlarını dahil etmek için bu seçeneği etkinleştirin.

ENABLE_RAW_MANAGE_EXTERNAL_STORAGE_ACCESS

Değişiklik Kimliği: 178209446
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Manifest.permission.MANAGE_EXTERNAL_STORAGE iznine sahip uygulamaların ham harici depolama erişimi istemesine izin vermek için bu seçeneği etkinleştirin.

ENFORCE_MINIMUM_WINDOW_ON_INEXACT_ALARMS

Değişiklik Kimliği: 185199076
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için tüm tam olmayan alarmların minimum aralık boyutuna sahip olması gerekir. Bu tahmini zaman aralığı birkaç dakikadır. Pratikte daha küçük aralıklar gerektiren alarmlar tam alarmlarla aynıdır ve sağlanan setExact(int, long, PendingIntent) gibi ilgili API'leri kullanmalıdır. Daha kısa zaman aralıklarına sahip olan tam olmayan alarmların aralıkları, sistem tarafından uzatılır.

ENFORCE_NATIVE_SHARED_LIBRARY_DEPENDENCIES

Değişiklik Kimliği: 142191088
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamaların, cihaz üreticisi tarafından AndroidManifest.xml içindeki uses-native-library etiketini kullanarak tanımlanan ve herkese açık yerel paylaşılan kitaplıklara bağımlılık bildirmesi gerekir. Bağımlılıklardan herhangi biri karşılanamazsa (örneğin, bağımlılıklardan biri yoksa) paket yöneticisi uygulamayı yüklemez. Bağımlılık, etiketteki android:required özelliği kullanılarak isteğe bağlı olarak belirtilebilir. Bu durumda, bağımlılığın karşılanmaması yüklemeyi durdurmaz.

Yüklendikten sonra, bir uygulamaya yalnızca uygulama manifestinde belirtilen yerel paylaşılan kitaplıklar sağlanır. Uygulama manifest'inde görünmeyen yerel bir paylaşılan kitaplıkta dlopen çağrısı, aslında cihazda mevcut olsa bile başarısız olur.

ENFORCE_STRICT_QUERY_BUILDER

Değişiklik Kimliği: 143231523
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

Etkinleştirildiğinde SQLiteQueryBuilder, tüm CalendarProvider2 sorgu seçimlerini kötü amaçlı bağımsız değişkenlere karşı doğrular.

FGS_BG_START_RESTRICTION_CHANGE_ID

Değişiklik Kimliği: 170668199
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için bu ayar, uygulamaların arka planda çalışırken ön plan hizmetlerini başlatabileceği zamanı kısıtlar.

FGS_START_EXCEPTION_CHANGE_ID

Değişiklik Kimliği: 174041399
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar, arka planda çalışırken bir ön plan hizmeti başlatmaya çalıştığında sistemin IllegalStateException tetiklemesine izin verir.

FINISH_INPUT_NO_FALLBACK_CONNECTION

Değişiklik Kimliği: 156215187
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için cihaz non-interactive olduğunda InputConnection işlemini tamamlayın.

Mevcut input method tarafından etkinleştirilirse cihazlar etkileşimsiz hale geldiğinde geçerli giriş bağlantısı finished olur.

Etkinleştirilmezse, cihazlar etkileşimli olmadığında geçerli giriş bağlantısı sessizce devre dışı bırakılır ve cihaz tekrar etkileşimli hale geldiğinde bir onFinishInput() ve onStartInput() çifti gönderilir.

FORCE_DISABLE_HEVC_SUPPORT

Değişiklik Kimliği: 174227820
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

Bir uygulamanın, HEVC medya özelliğini desteklemesini zorla devre dışı bırakın. Uygulamalar, desteklenen medya özelliklerini manifest dosyalarında beyan etmelidir. Ancak bu işaret, bir uygulamayı HEVC'yi desteklememeye zorlamak için kullanılabilir. Bu da, HEVC'de kodlanmış medyaya erişirken kod dönüştürmeyi zorlamak için kullanılabilir. Bu işaret ayarlandığında uygulamalar için işletim sistemi düzeyindeki varsayılanlar geçersiz kılınır. Bu ayar varsayılan olarak devre dışıdır. Yani işletim sistemi varsayılanları önceliklidir. Hem bu işaret hem de FORCE_ENABLE_HEVC_SUPPORT etkinleştirilirse işletim sistemi her iki işareti de yoksayar.

FORCE_ENABLE_HEVC_SUPPORT

Değişiklik Kimliği: 174228127
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

Bir uygulamayı HEVC medya özelliğini destekleyecek şekilde etkinleştirmeye zorla Bu işaret ayarlandığında uygulamalar için işletim sistemi düzeyindeki varsayılanlar geçersiz kılınır. Bu özellik varsayılan olarak devre dışıdır. Yani işletim sistemi varsayılanları öncelikli olur. Hem bu işaret hem de FORCE_DISABLE_HEVC_SUPPORT etkinleştirilirse işletim sistemi her iki işareti de yoksayar.

FORCE_NON_RESIZE_APP

Değişiklik Kimliği: 181136395
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

Uygulandığı paketleri yeniden boyutlandırılamaz olmaya zorlar.

FORCE_RESIZE_APP

Değişiklik Kimliği: 174042936
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

Uygulandığı paketleri yeniden boyutlandırılabilir olmaya zorlar. Yalnızca tam ekran pencere modunda yeniden boyutlandırmaya izin verilir, ancak uygulamayı yeniden boyutlandırılabilir çoklu pencere moduna zorunlu kılmayız.

HIDE_PROP_ICUBINARY_DATA_PATH

Değişiklik Kimliği: 171979766
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için android.icu.impl.ICUBinary.dataPath özelliğine erişimi kaldırır.

IGNORE_ALLOW_BACKUP_IN_D2D

Değişiklik Kimliği: 183147249
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

android:allowBackup, Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalarda cihazdan cihaza (D2D) taşıma işlemi sırasında yoksayılır.

IGNORE_FULL_BACKUP_CONTENT_IN_D2D

Değişiklik Kimliği: 180523564
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için android:fullBackupContent kullanılarak belirtilen dahil etme ve hariç tutma kuralları, cihazdan cihaza (D2D) aktarım sırasında yoksayılır.

IME_AUTOFILL_DEFAULT_SUPPORTED_LOCALES_IS_EMPTY

Değişiklik Kimliği: 169273070
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

getSupportedLocales(), Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için artık ayarlanmadığında varsayılan sistem yerel ayarı yerine boş bir yerel ayar listesi döndürüyor.

IS_BACKUP_SERVICE_ACTIVE_ENFORCE_PERMISSION_IN_SERVICE

Değişiklik Kimliği: 158482162
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalarda, isBackupServiceActive() için gereken BACKUP izni BackupManager ürününde istemci tarafında değil, hizmet tarafında uygulanır.

KEYSTORE_OPERATION_CREATION_MAY_FAIL

Değişiklik Kimliği: 169897160
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

Etkinleştirildiğinde, anahtar deposu işlemi oluşturma işlemi, yeni budama stratejisine göre başarısız olabilir. Anahtar deposu, kriptografik işlemlerin her zaman başarılı olduğu varsayımıyla çalışır. Bununla birlikte, KeyMint arka ucunun yalnızca sınırlı sayıda işlem yuvası vardır.

Anahtar deposu arka plan programı, "sonsuz" çalışma slotlarının görünümünü korumak için kullanılabilir işlem yuvası yoksa en son kullanılan işlemleri ayıklar. Sonuç olarak iyi işlemler zamanından önce sonlandırılabilir. Bu durum, AndroidKeystore'un hizmet reddi (DoS) ve istenmeyen canlı kilitlenme ile sonuçlanmasını sağladı. Örneğin, güç yönetimi optimizasyonları nedeniyle aynı anda birden fazla uygulama uyanır ve şifreleme işlemleri yapmaya çalışırsa hiçbir ilerleme kaydedilmeden birbirlerinin işlemlerini sonlandırmaya başlarlar.

Canlı kilitleri kırmak ve DoS girişimlerini önlemek için budama stratejisini kısa süreli az işlem slotu kullanan müşterileri tercih edecek şekilde değiştirdik. Sonuç olarak 5 saniyeden daha uzun süre işlem yapılmayan tek bir işlem, neredeyse her zaman budama stratejisinden engellenmeyecek şekilde sonuçlanır. Yine de dosya sistemi şifrelemeyle ilgili, bu işlemleri bile ayıklayabilen bazı işlemler vardır ancak bu durumlar son derece nadirdir. Bu yeni budama stratejisi işleminin bir yan etkisi olarak, istemcinin mevcut tüm işlemlerden daha düşük bir budama gücüne sahip olması durumunda oluşturma işlemi başarısız olabilir.

Budama stratejisi: Uygun bir aday bulmak için arayan ve mevcut her işlemin kalitesini hesaplarız. Malus, budama gücünün (arayan) veya budama direncinin (mevcut işlem) tersidir. Arayanın bir işlemi ayıklayabilmesi için kendisinden daha yüksek kaliteli bir sorunlu olan bir işlem bulması gerekir. Budama stratejisi hakkında daha fazla bilgi için operation.rs uygulamasına bakın. Android 11 (API düzeyi 30) ve önceki sürümlerde KeyStore2, Anahtar Deposu arka plan programını boş çalışma alanı için yoklar. Android 11 (API düzeyi 30) ve önceki sürümleri hedefleyen uygulamalar için şifre ve imza nesnesi başlatma işlemi her zaman başarılı gibi görünür, ancak işlemin tamamlanması daha uzun sürebilir. Tüm Android sürümleri, daha adil işlem alanı planlamasından yararlanır ve işlemi başarılı bir şekilde sonuçlandırma şansı artırır.

LOCK_DOWN_CLOSE_SYSTEM_DIALOGS

Değişiklik Kimliği: 174664365
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Intent.ACTION_CLOSE_SYSTEM_DIALOGS, Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS iznine sahip olmadığı sürece gönderilemez. Bu uygulamanın, Android 12 (API düzeyi 31) veya sonraki sürümleri hedeflemeye başladığında uygulamanın Intent.ACTION_CLOSE_SYSTEM_DIALOGS niyetini göndermeyi durdurmasını bekleyen #DROP_CLOSE_SYSTEM_DIALOGS uygulamasının daha kısıtlayıcı sürümü olduğunu unutmayın.

LOCK_DOWN_COLLAPSE_STATUS_BAR

Değişiklik Kimliği: 173031413
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalarda, güvenlik nedeniyle durum çubuğu panellerinin daraltılması için Manifest.permission.STATUS_BAR izni gerekir. Kullanıcıların kritik bildirimlere erişmesini engellemek için kötü amaçlı yazılım bu durumu istismar ediyordu.

LOW_POWER_EXCEPTIONS

Değişiklik Kimliği: 168936375
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için çağrıyı yapanın LOCATION_HARDWARE iznine sahip olmaması durumunda, isteğin düşük güçteki kısmını sessizce bırakmak yerine düşük güç atış istisnası olarak işaretlenen tüm LocationRequest nesneleri.

MISSING_EXPORTED_FLAG

Değişiklik Kimliği: 150232615
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için bir intent filtresi tanımlandığında android:exported özelliği için açık bir değer belirtilmelidir.

Bu değişiklik hakkında daha fazla bilgi edinmek için Bileşenlerin daha güvenli şekilde dışa aktarılması başlıklı makaleyi inceleyin.

NATIVE_HEAP_POINTER_TAGGING_APP_ZYGOTE

Değişiklik Kimliği: 207557677
Varsayılan Durum: Android 12 (API düzeyi 32) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 32) ve sonraki sürümleri hedefleyen uygulamalar için AppZygote işlemindeki ve alt öğelerindeki yerel yığın ayırmaları, en önemli baytta sıfır olmayan bir etiket kullanır.

Bu değişiklik hakkında daha fazla bilgi edinmek için Etiketli İşaretçiler bölümüne bakın.

NATIVE_HEAP_ZERO_INIT

Değişiklik Kimliği: 178038272
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

Yerel yığın bellek ayırmalarının otomatik olarak sıfır başlatılmasını etkinleştir.

NATIVE_MEMTAG_ASYNC

Değişiklik Kimliği: 135772972
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

Bu işlemde eşzamansız (ASYNC) bellek etiketi kontrolünü etkinleştirin. Bu işaret yalnızca ARM Bellek Etiketleme Uzantısı'nı (MTE) destekleyen donanımı etkiler.

NATIVE_MEMTAG_SYNC

Değişiklik Kimliği: 177438394
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

Bu işlemde eşzamanlı (SENKRONİZE) bellek etiketi kontrolünü etkinleştirir. Bu işaret yalnızca ARM Bellek Etiketleme Uzantısı'nı (MTE) destekleyen donanımı etkiler. Hem NATIVE_MEMTAG_ASYNC hem de bu seçenek etkinleştirilirse bu seçenek öncelikli olur ve MTE, SENKRONİZE modunda etkinleştirilir.

NEVER_SANDBOX_DISPLAY_APIS

Değişiklik Kimliği: 184838306
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

Etkinleştirildiğinde Display API korumalı alanının bir sinemaskop veya SCM etkinliğine uygulanmasını engeller. Display API'leri, DisplayArea sınırları sağlamaya devam edecek.

Bu değişiklik hakkında daha fazla bilgi edinmek için Android 12 davranış değişiklikleri sayfasındaki Kullanımdan kaldırılan görüntüleme yöntemleri bölümüne bakın.

NOTIFICATION_CANCELLATION_REASONS

Değişiklik Kimliği: 175319604
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Bildirim dinleyicilerin yeni iptal nedenlerini daha ayrıntılı şekilde anlamasına olanak tanır.

NOTIFICATION_TRAMPOLINE_BLOCK

Değişiklik Kimliği: 167676448
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12'yi hedefleyen uygulamalar, uygulama performansını ve kullanıcı deneyimini iyileştirmek için hizmetleri veya yayın alıcılarını bildirim trambolinleri olarak kullanamaz.

Bu değişiklik hakkında daha fazla bilgi edinmek için Hizmetlerden veya yayın alıcılarından bildirim trambolinleri oluşturulamaz.

NULL_TELEPHONY_THROW_NO_CB

Değişiklik Kimliği: 182185642
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Mevcut işlemin hedef SDK sürümünün Android 12 (API düzeyi 31) veya sonraki bir sürüm olup olmadığını kontrol etmek için kullanılır.

Aşağıdaki yöntemler için geçerlidir:

OVERRIDE_MIN_ASPECT_RATIO

Değişiklik Kimliği: 174042980
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

Bu değişiklik, belirli bir minimum en boy oranını zorlayan tüm değişikliklerin koruyucusudur. Bu değişikliğin etkinleştirilmesi aşağıdaki minimum en boy oranlarının uygulanmasına olanak tanır:

Bir uygulama paketi için bu değişiklik etkinleştirildiğinde, uygulamanın manifest değeri daha yüksek değilse, uygulamanın manifest dosyasında belirtilen minimum en boy oranı geçersiz kılınır. Bu sayede, etkin olan en büyük en boy oranı kullanılır.

OVERRIDE_MIN_ASPECT_RATIO_LARGE

Değişiklik Kimliği: 180326787
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

OVERRIDE_MIN_ASPECT_RATIO etkinleştirildiğinde, bir paket için bu değişikliğin etkinleştirilmesi, etkinliğin minimum en boy oranını OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE tarafından tanımlanan büyük bir değere ayarlar.

OVERRIDE_MIN_ASPECT_RATIO_MEDIUM

Değişiklik Kimliği: 180326845
Varsayılan Durum: Tüm uygulamalar için devre dışıdır.

OVERRIDE_MIN_ASPECT_RATIO etkinleştirildiğinde, bir paket için bu değişikliğin etkinleştirilmesi, etkinliğin minimum en boy oranını OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE tarafından tanımlanan orta değere ayarlar.

PENDING_INTENT_EXPLICIT_MUTABILITY_REQUIRED

Değişiklik Kimliği: 160794467
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için uygulamanızın oluşturduğu her PendingIntent nesnesinin değişkenliğini belirtmeniz gerekir. Bu ek şart, uygulamanızın güvenliğini artırır.

Bu değişiklik hakkında daha fazla bilgi edinmek için Beklemedeki amaçların değişkenliği bildirmesi gerekir bölümüne bakın.

PREVENT_SETTING_PASSWORD_QUALITY_ON_PARENT

Değişiklik Kimliği: 165573442
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen yönetici uygulamaları, DevicePolicyManager.getParentProfileInstance(ComponentName) çağrısı yapılarak edinilen DevicePolicyManager örneğinde şifre kalitesini ayarlamak için DevicePolicyManager.setPasswordQuality(ComponentName, int) özelliğini kullanamaz. Bunun yerine, cihaz genelinde genel şifre gereksinimlerini belirlemek için DevicePolicyManager.setRequiredPasswordComplexity(int) kullanmalıdır.

RATE_LIMIT_TOASTS

Değişiklik Kimliği: 174840628
Varsayılan Durum: Bu değişiklik açılamaz. Yalnızca uyumluluk çerçevesi tarafından günlüğe kaydedilir.

Sınırlı bir süre içinde çok fazla ileti gönderme işlemi gerçekleştirerek kullanıcının aşırı yüklenmesini önlemek için Toast.show() çağrılarının sayısında hız sınırlamasını etkinleştirir. Belirli bir zaman aralığında izin verilenden daha fazla kısa ileti gösterme girişimi, durum mesajının atılmasına neden olur.

REQUIRE_EXACT_ALARM_PERMISSION

Değişiklik Kimliği: 171306433
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamaların setExactAndAllowWhileIdle(int, long, PendingIntent) ve setAlarmClock(AlarmClockInfo, PendingIntent) gibi tam alarmlar ayarlamak üzere API'leri kullanabilmesi için Manifest.permission.SCHEDULE_EXACT_ALARM iznine sahip olması gerekir.

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_ACTIVE_DATA_SUB_ID

Değişiklik Kimliği: 182478738
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamaların TelephonyCallback.ActiveDataSubscriptionIdListener işlevini çağırabilmek için Manifest.permission.READ_PHONE_STATE iznine sahip olması gerekir.

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_CELL_INFO

Değişiklik Kimliği: 184323934
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamaların TelephonyCallback.CellInfoListener işlevini çağırabilmek için Manifest.permission.READ_PHONE_STATE iznine sahip olması gerekir.

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_DISPLAY_INFO

Değişiklik Kimliği: 183164979
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamaların TelephonyCallback.DisplayInfoListener işlevini çağırabilmek için Manifest.permission.READ_PHONE_STATE iznine sahip olması gerekir.

RESTRICT_ADB_BACKUP

Değişiklik Kimliği: 171032338
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

adb backup, Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalarda hata ayıklaması yapılabilir olarak çalışan (android:debuggable, true olarak ayarlandı) ve diğer uygulamalarda otomatik olarak etkinleştirilir.

RESTRICT_DOMAINS

Değişiklik Kimliği: 175408749
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için uygulama bağlantıları doğrulama API'sinin güncellenmiş biçimi gereklidir. Bu koşul, uygulamaların aşağıdakilerin tümünü içeren bir intent filtresi içinde alanları belirtmesi gerektiği anlamına gelir:

  • android:autoVerify="true"
  • Intent.ACTION_VIEW
  • Intent.CATEGORY_BROWSABLE
  • Intet.CATEGORY_DEFAULT
  • Yalnızca IntentFilter.SCHEME_HTTP ve/veya IntentFilter.SCHEME_HTTPS (başka şema olmadan)

Android'in önceki sürümlerinde Intent.CATEGORY_BROWSABLE zorunlu değildi, diğer şemalara izin veriliyordu ve herhangi bir intent filtresinde autoVerify değerinin true değerine ayarlanması tüm intent filtrelerinin autoVerify="true" olarak ayarlandığını varsayıyordu.

SECURITY_EXCEPTION_ON_INVALID_ATTRIBUTION_TAG_CHANGE

Değişiklik Kimliği: 151105954
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için noteOp(String, int, String), noteProxyOp(String, String) ve startOp(String, int, String) özelliklerine gönderilen tüm attributionTags, yöntemlerin parametresi olarak belirtilen paketin manifest dosyasında tanımlanır.

Bu değişikliğin etkinleştirilmesi için hem noteOp(String, int, String) çağrısı paketinde hem de yöntemin parametresi olarak belirtilen pakette bu değişikliğin etkinleştirilmesi gerekir.

SELINUX_LATEST_CHANGES

Değişiklik Kimliği: 143539591
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için en son SELinux değişikliklerini etkinleştirir. Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen bir uygulama için bu değişikliğin devre dışı bırakılması bir işlem değildir. Paylaşılan kullanıcı kimliği kullanan uygulamaları etkilemez.

SETTINGS_API_V2

Değişiklik Kimliği: 178111421
Varsayılan Durum: Tüm uygulamalar için etkindir.

AndroidManifest.xml intent filtrelerinde autoVerify=true olarak işaretlenen alanları doğrulamak için kullanılan yeni kullanıcı tercihi API'si, mevcut platform önizlemesinde henüz uygulanmadı. Şimdilik bu ChangeId'yi etkinleştirip adb shell pm set-app-links-user-selection ve benzer komutları kullanarak yeni kullanıcı tercihi değişikliklerini önizlemek mümkündür.

USE_SHORT_FGS_USAGE_INTERACTION_TIME

Değişiklik Kimliği: 183972877
Varsayılan Durum: Android 12 (API düzeyi 31) veya sonraki sürümleri hedefleyen uygulamalar için etkindir.

Android 12 (API düzeyi 31) ve sonraki sürümleri hedefleyen uygulamalar için uygulamalar bir ön plan hizmeti başlattığında bekleme paketini ACTIVE değerine yükseltmeden önce daha kısa bir zaman aşımı kullanılıp kullanılmayacağını belirler.