Änderungen am Kompatibilitäts-Framework (Android 12)

Abbildung 1: Auf dem Bildschirm „Änderungen bei der App-Kompatibilität“ in den Entwickleroptionen sind die Änderungen aufgeführt, die Sie aktivieren können.

Auf dieser Seite werden alle Verhaltensänderungen im Zusammenhang mit der Kompatibilität beschrieben. Framework für Android 12 (API-Level 31). Verwenden Sie diese Liste in Verbindung mit dem Entwickleroptionen und ADB-Befehle, Testen und debuggen Sie Ihre App, während Sie sich auf die Unterstützung und Ausrichtung auf Android 12 vorbereiten.

Mit den Tools des Compatibility Framework können Sie unter anderem Folgendes tun:

  • Gezielte Änderungen testen, ohne die targetSdkVersion. Mit den Ein-/Aus-Schaltflächen können Sie um die Auswirkungen auf Ihre bestehende App zu bewerten.
  • Konzentrieren Sie sich beim Testen ausschließlich auf bestimmte Änderungen. Anstatt sich bei Google alle zielgerichteten Änderungen gleichzeitig angewendet werden. außer denjenigen, die Sie testen möchten.
  • Ein/Aus-Schaltfläche über ADB verwalten Mit ADB-Befehlen können Sie Die ein- und ausschaltbaren Änderungen im automatisierten Test aktivieren und deaktivieren zu verbessern.
  • Mithilfe von Standard-Änderungs-IDs schneller Fehler beheben Ein-/Aus-Änderungen haben jeweils eine eindeutige ID und einen Namen, mit denen Sie die Ursache in der Protokollausgabe schnell beheben können.

Ausführliche Informationen zur Verwendung der Tools für die einzelnen Anwendungsfälle finden Sie unter Tools für das Compatibility Framework.

Verhaltensänderungen im Rahmen des Kompatibilitäts-Frameworks

In der Liste in diesem Abschnitt werden alle Verhaltensänderungen beschrieben, die in der Kompatibilitäts-Framework unter Android 12.

Sie können die Liste der Änderungen nach Standardstatus filtern.

Verhaltensänderungen im Kompatibilitäts-Framework in Android 12 hinzugefügt

ALWAYS_SANDBOX_DISPLAY_APIS

Change-ID: 185004937
Standardstatus: Für alle Apps deaktiviert.

Wenn diese Option aktiviert ist, wird eine Display API-Sandbox auf ein Paket angewendet. unabhängig vom Fenstermodus. Die Display APIs geben immer die App-Begrenzungen an.

Weitere Informationen zu dieser Änderung findest du im Abschnitt zur Android 12-Version Seite zu Verhaltensänderungen Anzeigemethoden, die eingestellt wurden

AUTOFILL_NON_TEXT_REQUIRES_ON_RECEIVE_CONTENT_LISTENER

Änderungs-ID: 163400105
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 32) oder höher ausgerichtet sind.

Ab Android 12 kann die Plattform mithilfe der erweiterten Autofill-Funktion Vorschläge ohne Text (z. B. Bilder) machen (siehe Autofill-Dienste). Damit eine App diese Vorschläge verarbeiten kann, muss in der Regel die OnReceiveContentListener API implementiert werden.

Damit die Einführung dieser API für Apps, die bereits die InputConnection.commitContent(InputContentInfo, int, Bundle)-API implementiert haben, reibungsloser verläuft, wird diese API als Fallback verwendet, wenn OnReceiveContentListener noch nicht von der App implementiert wurde. Dieser Fallback ist nur unter Android 12 (API-Level 31) aktiviert. Durch diese Änderungs-ID wird das Fallback deaktiviert, sodass Apps, die auf Android 12 (API-Level 32) und höher ausgerichtet sind, das OnReceiveContentListener API verwenden, um Nicht-Text-Vorschläge anzunehmen.

BLOCK_FLAG_SLIPPERY

Änderungs-ID: 157929241
Standardstatus: Für alle Apps aktiviert.

Bei Apps, die unter Android 12 (API-Level 31) ausgeführt werden, wird geprüft, ob FLAG_SLIPPERY für Fenster in der App verwendet wird. Wir gehen davon aus, dass dieses Flag wahrscheinlich nur von den Systemkomponenten verwendet wird, da es sich um ein nicht unterstütztes Feld handelt. In diesem Fall wird sie eingeschränkt.

BLOCK_GPS_STATUS_USAGE

Änderungs-ID: 144027538
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, muss die gesamte GpsStatus-API-Nutzung durch GnssStatus-APIs ersetzt werden.

BLOCK_IMMUTABLE_PENDING_INTENTS

Änderungs-ID: 171317480
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, unveränderlich PendingIntent -Objekte, die an Standort-APIs übergeben werden, generieren ein IllegalArgumentException.-Objekt.

BLOCK_PENDING_INTENT_SYSTEM_API_USAGE

Änderungs-ID: 169887240
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, können die System-APIs von LocationRequest nicht mit PendingIntent verwendet werden Standortanfragen.

BLOCK_UNTRUSTED_TOUCHES

Change-ID: 158002302
Standardstatus: Aktiviert für alle Apps.

Um die Systemsicherheit und eine gute Nutzererfahrung zu gewährleisten, verhindert Android 12, dass Apps Touch-Ereignisse verbrauchen, wenn ein Overlay die App auf unsichere Weise blockiert.

Weitere Informationen zu dieser Änderung finden Sie unter Nicht vertrauenswürdige Touch-Events werden blockiert.

CALL_ACTIVITY_RESULT_BEFORE_RESUME

Änderungs-ID: 78294732
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 32) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 32) und höher ausgerichtet sind, wird der Lebenszyklus des Aktivitätsergebnisses korrigiert, damit eine Aktivität das Aktivitätsergebnis kurz vor der Fortsetzung erhält.

CAMERA_MIC_INDICATORS_NOT_PRESENT

Änderungs-ID: 162547999
Standardstatus: Für alle Apps deaktiviert.

Gibt an, dass dieses Gerät Kamera- und Mikrofonsymbole unterstützt. Ist false, wenn da CompatChanges#isChangeEnabled gibt true zurück, wenn die Änderungs-ID nicht vorhanden ist.

CANNOT_INSTALL_WITH_BAD_PERMISSION_GROUPS

Änderungs-ID: 146211400
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 32) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 32) und höher ausgerichtet sind, installiert der Paketmanager kein Paket, wenn fehlerhafte Berechtigungsgruppen vorhanden sind. Berechtigungsgruppen sollten nur zwischen Apps geteilt werden, die ein Zertifikat verwenden. Wenn eine Berechtigung zu einer Gruppe gehört, muss auch diese Gruppe definiert werden.

CHANGE_ID_AUTH_STATE_DENIED

Änderungs-ID: 181350407
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Client-Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird ein SecurityException ausgelöst, wenn sie sich im abgelehnten Autorisierungsstatus und versuchen Sie, eine Nachricht an eine Nanoapp zu senden.

CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION

Änderungs-ID: 136069189
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird SecurityException ausgelöst, wenn keine HIGH_SAMPLING_RATE_SENSORS, führen Sie es im Debug-Modus aus und fordern Sie Abtastraten an, die schneller als 200 Hz sind.

DELIVER_HISTORICAL_LOCATIONS

Change ID: 73144566
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, erhalten Standortclients unter Umständen unter bestimmten Umständen bisherige Standorte (vor dem aktuellen Zeitpunkt).

DISPLAY_INFO_NR_ADVANCED_SUPPORTED

Änderungs-ID: 181658987
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, bietet diese Funktion Abwärtskompatibilität für Änderungen in TelephonyDisplayInfo.

DISPLAY_MODE_RETURNS_PHYSICAL_REFRESH_RATE

Änderungs-ID: 170503758
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, kann die Plattform die Framerate einer App auf einen Teiler der Aktualisierungsrate drosseln, wenn dies besser geeignet ist (z. B. wenn die App Surface.setFrameRate(float, int) aufruft). Bei der gedrosselten Framerate treten bei Apps Choreographer.postFrameCallback(Choreographer.FrameCallback)-Callbacks und Backpressure auf. Apps verwenden Display.getRefreshRate() und Display.Mode.getRefreshRate(), um die Aktualisierungsrate des Displays zu ermitteln. Display.getRefreshRate() gibt immer die Framerate der Anwendung und nicht die Aktualisierungsrate des physischen Displays zurück. um die Frametaktung richtig zu steuern. Display.Mode.getRefreshRate() gibt die Framerate der App zurück, wenn sie für eine frühere Version kompiliert wurde. Ab Android 12 (API-Level 31) wird die physische Displayaktualisierungsrate zurückgegeben.

DOWNSCALED

Change-ID: 168419799
Standardstatus: Für alle Apps deaktiviert.

Diese Änderung ist der Gatekeeper für alle Änderungen am App-spezifischen Puffer-Downscaling. Wenn Sie diese Änderung aktivieren, können angewendet werden soll:

Wenn diese Änderung für ein App-Paket aktiviert ist, wird die App zwangsweise. auf den höchsten aktivierten Skalierungsfaktor verkleinert. Beispiel: Wenn sowohl 80 % als auch 70 % (DOWNSCALE_80 und DOWNSCALE_70) aktiviert sind, wird 80 % verwendet.

DOWNSCALE_30

Änderungs-ID: 189970040
Standardstatus: Für alle Apps deaktiviert.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 30 % der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_35

Änderungs-ID: 189969749
Standardstatus: Deaktiviert für alle Apps.

Wenn DOWNSCALED ebenfalls aktiviert ist, wird durch die Aktivierung dieser Änderung für ein Paket die App gezwungen, Er wird auf einem Display geschaltet, bei dem 35% der vertikalen und horizontalen Auflösung des tatsächlichen Bildschirms.

DOWNSCALE_40

Change-ID: 189970038
Standardstatus: Für alle Apps deaktiviert.

Wenn DOWNSCALED ebenfalls aktiviert ist, wird durch die Aktivierung dieser Änderung für ein Paket die App gezwungen, Die Anzeige läuft auf einem Display, bei dem 40% der vertikalen und horizontalen Auflösung des tatsächlichen Bildschirms.

DOWNSCALE_45

Change-ID: 189969782
Standardstatus: Für alle Apps deaktiviert.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 45 % der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_50

Änderungs-ID: 176926741
Standardstatus: Für alle Apps deaktiviert.

Wenn DOWNSCALED ebenfalls aktiviert ist, wird durch die Aktivierung dieser Änderung für ein Paket die App gezwungen, auf einem Display mit 50% der vertikalen und horizontalen Auflösung des tatsächlichen Bildschirms.

DOWNSCALE_55

Änderungs-ID: 189970036
Standardstatus: Für alle Apps deaktiviert.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 55 % der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_60

Änderungs-ID: 176926771
Standardstatus: Für alle Apps deaktiviert.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 60 % der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_65

Änderungs-ID: 189969744
Standardstatus: Für alle Apps deaktiviert.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 65 % der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_70

Änderungs-ID: 176926829
Standardstatus: Deaktiviert für alle Apps.

Wenn DOWNSCALED ebenfalls aktiviert ist, wird durch die Aktivierung dieser Änderung für ein Paket die App gezwungen, auf einem Display mit 70% der vertikalen und horizontalen Auflösung des tatsächlichen Bildschirms.

DOWNSCALE_75

Änderungs-ID: 189969779
Standardstatus: Für alle Apps deaktiviert.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 75 % der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_80

Änderungs-ID: 176926753
Standardstatus: Für alle Apps deaktiviert.

Wenn auch DOWNSCALED aktiviert ist, wird die App durch diese Änderung für ein Paket gezwungen anzunehmen, dass sie auf einem Display mit 80 % der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_85

Änderungs-ID: 189969734
Standardstatus: Für alle Apps deaktiviert.

Wenn DOWNSCALED ebenfalls aktiviert ist, wird durch die Aktivierung dieser Änderung für ein Paket die App gezwungen, Die Anzeige läuft auf einem Display, bei dem 85% der vertikalen und horizontalen Auflösung des tatsächlichen Bildschirms.

DOWNSCALE_90

Change-ID: 182811243
Standardstatus: Für alle Apps deaktiviert.

Wenn DOWNSCALED ebenfalls aktiviert ist, wird durch die Aktivierung dieser Änderung für ein Paket die App gezwungen, Es wird auf einem Display geschaltet, bei dem 90% der vertikalen und horizontalen Auflösung des tatsächlichen Bildschirms.

DO_NOT_DOWNSCALE_TO_1080P_ON_TV

Änderungs-ID: 157629738
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Android TV-Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, sollten jede Fenstergröße verarbeiten, einschließlich Fenstergrößen über 1080p. Bei Apps, die auf ältere Android-Versionen ausgerichtet sind, wird nicht davon ausgegangen, dass Fenster größer als 1080p empfangen werden. Daher werden sie bei Bedarf auf 1080p herunterskaliert.

DROP_CLOSE_SYSTEM_DIALOGS

Änderungs-ID: 174664120
Standardstatus: Für alle Apps aktiviert.

Um die Nutzersteuerung bei der Interaktion mit Apps und dem System zu verbessern, wird die Intent-Aktion ACTION_CLOSE_SYSTEM_DIALOGS ab Android 12 eingestellt.

Weitere Informationen zu dieser Änderung finden Sie unter Apps können Systemdialoge nicht schließen.

ENABLE_CHECKS_FOR_PRIVATE_FILES

Änderungs-ID: 172100307
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

In Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, können keine privaten Dateien über einen Medienanbieter eingefügt oder aktualisiert werden.

ENABLE_DEFERRED_SCAN

Änderungs-ID: 180326732
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Aktivieren Sie diese Option, um den Scan zu verschieben, der im Rahmen von MediaProvider#update() ausgelöst wird.

ENABLE_GET_CALL_STATE_PERMISSION_PROTECTION

Change ID: 157233955
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird der READ_PHONE_STATE-Schutz bei APIs-Abfragen und Benachrichtigungen zum Aufrufstatus aktiviert, z. B. TelecomManager#getCallState, TelephonyManager.getCallStateForSubscription() und TelephonyCallback.CallStateListener.

ENABLE_GET_PHONE_ACCOUNT_PERMISSION_PROTECTION

Änderungs-ID: 183407956
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Aktivieren Sie für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, READ_PHONE_NUMBERS- oder READ_PRIVILEGED_PHONE_STATE-Schutzmaßnahmen für getPhoneAccount(PhoneAccountHandle).

ENABLE_INCLUDE_ALL_VOLUMES

Änderungs-ID: 182734110
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Aktivieren Sie diese Option, um Datenbankzeilen von Dateien aus einem kürzlich getrennten Volume in MediaProvider#query einzubeziehen.

ENABLE_RAW_MANAGE_EXTERNAL_STORAGE_ACCESS

Änderungs-ID: 178209446
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Aktivieren Sie diese Option, damit Apps mit der Berechtigung Manifest.permission.MANAGE_EXTERNAL_STORAGE Zugriff auf den externen Rohspeicher anfordern können.

ENFORCE_MINIMUM_WINDOW_ON_INEXACT_ALARMS

Änderungs-ID: 185199076
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, müssen alle ungenauen Alarme eine Mindestfenstergröße von wenigen Minuten haben. Praktisch sind alle Wecker, für die kleinere Zeitfenster erforderlich sind, mit genauen Weckern identisch und sollten die entsprechenden APIs verwenden, z. B. setExact(int, long, PendingIntent). Bei ungenauen Benachrichtigungen mit kürzeren Zeitfenstern werden diese vom System verlängert.

ENFORCE_NATIVE_SHARED_LIBRARY_DEPENDENCIES

Änderungs-ID: 142191088
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, müssen Abhängigkeiten gegenüber den öffentlichen nativen gemeinsam genutzten Bibliotheken deklariert werden, die werden vom Gerätehersteller mithilfe des uses-native-library-Tags im AndroidManifest.xml definiert. Wenn eine der Abhängigkeiten nicht erfüllt werden kann – wenn beispielsweise eine der Abhängigkeiten nicht vorhanden ist –, installiert der Paketmanager die App nicht. Die Abhängigkeit kann die mithilfe des Attributs android:required im Tag als optional angegeben werden. der Installation.

Nach der Installation erhält eine App nur die nativen gemeinsam genutzten Bibliotheken, die im App-Manifest angegeben sind. Wenn dlopen auf eine native freigegebene Bibliothek aufgerufen wird, die nicht im App-Manifest aufgeführt ist, schlägt der Aufruf fehl, auch wenn die Bibliothek tatsächlich auf dem Gerät vorhanden ist.

ENFORCE_STRICT_QUERY_BUILDER

Change-ID: 143231523
Standardstatus: Deaktiviert für alle Apps.

Wenn diese Option aktiviert ist, wird die SQLiteQueryBuilder überprüft die gesamte CalendarProvider2-Abfrageauswahl anhand schädlicher Argumente.

FGS_BG_START_RESTRICTION_CHANGE_ID

Änderungs-ID: 170668199
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird eingeschränkt, wann Apps Dienste im Vordergrund starten können, während sie im Hintergrund ausgeführt werden.

FGS_START_EXCEPTION_CHANGE_ID

Änderungs-ID: 174041399
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die für Android 12 (API-Level 31) und höher bestimmt sind, kann das System eine IllegalStateException auslösen, wenn eine App versucht, einen Dienst im Vordergrund zu starten, während sie im Hintergrund ausgeführt wird.

FINISH_INPUT_NO_FALLBACK_CONNECTION

Änderungs-ID: 156215187
Standardstatus: Für alle Apps deaktiviert.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, schließen Sie die InputConnection ab, wenn das Gerät non-interactive.

Wenn diese Funktion durch den aktuellen input method aktiviert wird, ist die aktuelle Eingangsverbindung finished, wenn das Gerät nicht mehr interaktiv ist.

Wenn diese Option nicht aktiviert ist, wird die aktuelle Eingabeverbindung automatisch deaktiviert, wenn das Gerät nicht mehr interaktiv ist, und ein onFinishInput() und onStartInput() wird gesendet, wenn das Gerät wieder interaktiv wird.

FORCE_DISABLE_HEVC_SUPPORT

Änderungs-ID: 174227820
Standardstatus: Für alle Apps deaktiviert.

Erzwingen, dass eine App die HEVC-Medienfunktion nicht unterstützt. Die unterstützten Medienfunktionen sollten in den Apps Manifestdatei, aber dieses Flag kann verwendet werden, um eine App Unterstützung von HEVC, sodass die Transcodierung beim Zugriff auf Medien erzwungen wird HEVC-codiert sein. Durch das Festlegen dieses Flags werden alle Standardeinstellungen auf Betriebssystemebene überschrieben für Apps. Es ist standardmäßig deaktiviert, das heißt, das Betriebssystem Vorrang haben. Wenn sowohl dieses Flag als auch FORCE_ENABLE_HEVC_SUPPORT sind aktiviert, vom Betriebssystem ignoriert beiden Flags.

FORCE_ENABLE_HEVC_SUPPORT

Änderungs-ID: 174228127
Standardstatus: Für alle Apps deaktiviert.

Erzwingt die Unterstützung der HEVC-Medienfunktion für eine App. Apps müssen ihre unterstützten Medienfunktionen in ihrem Manifest angeben. Mit diesem Flag kann jedoch erzwungen werden, dass eine App HEVC unterstützt, um so eine Transcodierung beim Zugriff auf in HEVC codierte Medien zu vermeiden. Einstellung überschreibt dieses Flag alle Standardeinstellungen auf Betriebssystemebene für Apps. Deaktivierung durch Standardeinstellung, d. h. die Standardeinstellungen des Betriebssystems haben Vorrang. Wenn beides dieses Flag und FORCE_DISABLE_HEVC_SUPPORT sind aktiviert, ignoriert das Betriebssystem beide Flags.

FORCE_NON_RESIZE_APP

Change-ID: 181136395
Standardstatus: Deaktiviert für alle Apps.

Erzwingt, dass die Größe der Pakete, auf die es angewendet wird, nicht geändert werden kann.

FORCE_RESIZE_APP

Änderungs-ID: 174042936
Standardstatus: Für alle Apps deaktiviert.

Erzwingt, dass die Größe der Pakete, auf die es angewendet wird, angepasst werden kann. Wir nur Größenanpassung im Vollbildfenstermodus, ohne die App zu erzwingen in den Mehrfenstermodus wechseln.

HIDE_PROP_ICUBINARY_DATA_PATH

Änderungs-ID: 171979766
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird der Zugriff auf die Property android.icu.impl.ICUBinary.dataPath entfernt.

IGNORE_ALLOW_BACKUP_IN_D2D

Change ID: 183147249
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird android:allowBackup bei der Migration von Gerät zu Gerät (D2D) ignoriert.

IGNORE_FULL_BACKUP_CONTENT_IN_D2D

Änderungs-ID: 180523564
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, werden die mit android:fullBackupContent festgelegten Ein- und Ausschlussregeln bei der Übertragung von Gerät zu Gerät (D2D) ignoriert.

IME_AUTOFILL_DEFAULT_SUPPORTED_LOCALES_IS_EMPTY

Änderungs-ID: 169273070
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, gibt getSupportedLocales() jetzt den Wert eine leere Gebietsschemaliste, wenn sie nicht festgelegt ist, anstelle der Standardsprache des Systems.

IS_BACKUP_SERVICE_ACTIVE_ENFORCE_PERMISSION_IN_SERVICE

Änderungs-ID: 158482162
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, ist die Berechtigung BACKUP für isBackupServiceActive() wird in BackupManager auf Dienstseite und nicht clientseitig erzwungen.

KEYSTORE_OPERATION_CREATION_MAY_FAIL

Change-ID: 169897160
Standardstatus: Deaktiviert für alle Apps.

Wenn diese Option aktiviert ist, schlägt die Erstellung des Schlüsselspeichervorgangs möglicherweise die neue Beschneidungsstrategie. Schlüsselspeicher, der unter der Annahme funktioniert hat dass kryptografische Vorgänge immer erfolgreich sind. Das KeyMint-Back-End hat jedoch nur eine begrenzte Anzahl von Vorgängen. Slots.

Um den Eindruck von "unendlich" Vorgangsslots, würde der Schlüsselspeicher-Daemon die am längsten zurückliegenden Vorgänge bereinigt, es keinen verfügbaren Slot für Operationen gab. Dadurch können gute Vorgänge vorzeitig beendet werden. Dadurch konnte AndroidKeystore Denial-of-Service (DoS) und unbeabsichtigte Livelock-Funktion. Beispiel: Der Energiesparmodus aktiviert mehrere Apps gleichzeitig und versuchten, Krypto-Operationen durchzuführen, sich gegenseitig beenden, ohne Fortschritte zu machen.

Um Livelocks zu vermeiden und DoS-Angriffe zu erschweren, haben wir die Bereinigungsstrategie so geändert, dass Clients bevorzugt werden, die nur kurz wenige Betriebsslots nutzen. Daher sind einzelne Vorgänge, die nicht länger als 5 Sekunden inaktiv sind, ohne Einbußen bei der Bereinigungsstrategie. Es gibt immer noch Vorgänge im Zusammenhang mit der Dateisystemverschlüsselung, die sogar aber diese Fälle sind extrem selten. Als Nebeneffekt dieser neuen Strategie kann die Erstellung jetzt fehlschlagen, wenn der Client eine geringere Beschneidungsleistung als alle vorhandenen Vorgänge hat.

Bereinigungsstrategie: Um einen geeigneten Kandidaten zu finden, berechnen wir den Malus für den Aufrufer und jeden vorhandenen Vorgang. Der Malus ist das Gegenteil der Beschneidungskraft (Anrufer) oder des Beschneidungswiderstands (bestehender Vorgang). Damit der Aufrufer einen Vorgang entfernen kann, muss er einen Vorgang mit einem höheren Malus finden. Weitere Informationen zur Bereinigungsstrategie findest du in der Implementierung von operation.rs Unter Android 11 (API-Level 30) und niedriger fragt KeyStore2 die Schlüsselspeicher-Daemon für einen kostenlosen Vorgangsslot. Für App-Targeting Android 11 (API-Level 30) und niedriger sehen sie immer noch wie eine Chiffre und Die Initialisierung des Signaturobjekts ist immer erfolgreich, um einen Vorgang zu erhalten. Alle Android-Versionen profitieren von faireren Zeitblöcke planen und die Chance auf einen erfolgreichen Abschluss eine Operation.

LOCK_DOWN_CLOSE_SYSTEM_DIALOGS

Änderungs-ID: 174664365
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, kann die Intent.ACTION_CLOSE_SYSTEM_DIALOGS nur gesendet werden, wenn die App auch die Berechtigung android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS hat. Hinweis: Dies ist die strengere Version von #DROP_CLOSE_SYSTEM_DIALOGS. Dabei wird davon ausgegangen, dass die App das Senden der Intent.ACTION_CLOSE_SYSTEM_DIALOGS-Intent beendet, sobald die App auf Android 12 (API-Level 31) oder höher ausgerichtet ist.

LOCK_DOWN_COLLAPSE_STATUS_BAR

Change ID: 173031413
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, ist die Berechtigung Manifest.permission.STATUS_BAR erforderlich, um den Bereich aus Sicherheitsgründen in der Statusleiste. Dieser wurde von Malware ausgenutzt, um zu verhindern, dass der Nutzer auf kritische Benachrichtigungen zugreift.

LOW_POWER_EXCEPTIONS

Change ID: 168936375
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, alle LocationRequest-Objekte, die als wenig Stromverbrauch gekennzeichnet sind wenn der Aufrufer die Berechtigung LOCATION_HARDWARE nicht hat, anstatt die niedrige entscheidend für die Anfrage sein.

MISSING_EXPORTED_FLAG

Änderungs-ID: 150232615
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, muss für das android:exported-Attribut immer ein expliziter Wert angegeben werden, wenn ein Intent-Filter definiert ist.

Weitere Informationen zu dieser Änderung finden Sie unter Sicherer Export von Komponenten.

NATIVE_HEAP_POINTER_TAGGING_APP_ZYGOTE

Change ID: 207557677
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 32) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 32) und höher ausgerichtet sind, werden native Heap-Zuweisungen im AppZygote-Prozess und dessen Nachfolgervorgängen zugewiesen ein Tag ungleich null im höchstwertigen Byte verwenden.

Weitere Informationen zu dieser Änderung finden Sie unter Zeiger mit Tags.

NATIVE_HEAP_ZERO_INIT

Change-ID: 178038272
Standardstatus: Deaktiviert für alle Apps.

Aktivieren Sie die automatische Null-Initialisierung von nativen Heap-Arbeitsspeicherzuweisungen.

NATIVE_MEMTAG_ASYNC

Änderungs-ID: 135772972
Standardstatus: Für alle Apps deaktiviert.

Aktivieren Sie in diesem Prozess die asynchrone (ASYNC) Speicher-Tag-Prüfung. Dieses Flag gilt nur für Hardware, die die ARM Memory Tagging Extension (MTE) unterstützt.

NATIVE_MEMTAG_SYNC

Änderungs-ID: 177438394
Standardstatus: Für alle Apps deaktiviert.

Aktiviert die synchrone Überprüfung von Speicher-Tags (SYNC) in diesem Prozess. Dieses Flag gilt nur für Hardware, die die ARM Memory Tagging Extension (MTE) unterstützt. Wenn sowohl NATIVE_MEMTAG_ASYNC als auch diese Option aktiviert sind, Priorität hat und MTE im SYNC-Modus aktiviert ist.

NEVER_SANDBOX_DISPLAY_APIS

Änderungs-ID: 184838306
Standardstatus: Für alle Apps deaktiviert.

Wenn diese Option aktiviert ist, wird verhindert, dass Display API-Sandboxing auf eine Letterbox- oder SCM-Aktivitäten. Die Display APIs stellen weiterhin Begrenzungen für den Displaybereich bereit.

Weitere Informationen zu dieser Änderung finden Sie auf der Seite „12 Verhaltensänderungen bei Android“ im Abschnitt zu Eingestellten Displaymethoden.

NOTIFICATION_CANCELLATION_REASONS

Änderungs-ID: 175319604
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Ermöglicht es den Benachrichtigungsempfängern, neue, genauere Gründe für die Stornierung zu erfahren.

NOTIFICATION_TRAMPOLINE_BLOCK

Änderungs-ID: 167676448
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Zur Verbesserung von App-Leistung und Nutzerfreundlichkeit dürfen Apps, die auf Android 12 ausgerichtet sind, keine Dienste oder Übertragungsempfänger verwenden als Benachrichtigungs-Trampoline.

Weitere Informationen zu dieser Änderung finden Sie unter Benachrichtigungstrampoline können nicht mehr über Dienste oder Broadcastempfänger erstellt werden.

NULL_TELEPHONY_THROW_NO_CB

Änderungs-ID: 182185642
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Wird verwendet, um zu prüfen, ob die Ziel-SDK-Version für den aktuellen Prozess Android 12 (API-Level 31) oder höher ist.

Gilt für die folgenden Methoden:

OVERRIDE_MIN_ASPECT_RATIO

Änderungs-ID: 174042980
Standardstatus: Für alle Apps deaktiviert.

Diese Änderung ist der Gatekeeper für alle Änderungen, die ein bestimmtes Mindestseitenverhältnis erzwingen. Wenn Sie diese Änderung aktivieren, wird das folgende Mindestformat zugelassen angewendete Verhältnisse:

Wenn diese Änderung für ein App-Paket aktiviert ist, wird das im Manifest der App angegebene Mindestseitenverhältnis durch das größte aktivierte Seitenverhältnis überschrieben, es sei denn, der Manifestwert der App ist höher.

OVERRIDE_MIN_ASPECT_RATIO_LARGE

Änderungs-ID: 180326787
Standardstatus: Für alle Apps deaktiviert.

Wenn auch OVERRIDE_MIN_ASPECT_RATIO aktiviert ist, wird durch diese Änderung für ein Paket das minimale Seitenverhältnis der Aktivität auf einen großen Wert gemäß OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE festgelegt.

OVERRIDE_MIN_ASPECT_RATIO_MEDIUM

Änderungs-ID: 180326845
Standardstatus: Für alle Apps deaktiviert.

Wenn auch OVERRIDE_MIN_ASPECT_RATIO aktiviert ist, wird durch diese Änderung für ein Paket das minimale Seitenverhältnis der Aktivität auf einen mittleren Wert gemäß OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE festgelegt.

PENDING_INTENT_EXPLICIT_MUTABILITY_REQUIRED

Änderungs-ID: 160794467
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, müssen Sie die Veränderlichkeit aller PendingIntent-Objekte angeben, die von Ihrer App erstellt werden. Diese zusätzliche Anforderung erhöht die Sicherheit Ihrer App.

Weitere Informationen zu dieser Änderung finden Sie unter Ausstehende Intents müssen Veränderlichkeit deklarieren.

PREVENT_SETTING_PASSWORD_QUALITY_ON_PARENT

Änderungs-ID: 165573442
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Administrator-Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, kann die Passwortqualität nicht über DevicePolicyManager.setPasswordQuality(ComponentName, int) für die DevicePolicyManager-Instanz festgelegt werden, die durch Aufrufen von DevicePolicyManager.getParentProfileInstance(ComponentName) abgerufen wird. Stattdessen sollten sie DevicePolicyManager.setRequiredPasswordComplexity(int) verwenden, um geräteübergreifend grobkörnige Passwortanforderungen festzulegen.

RATE_LIMIT_TOASTS

Änderungs-ID: 174840628
Standardstatus: Diese Änderung kann nicht geändert werden. Sie wird nur vom Kompatibilitäts-Framework protokolliert.

Hiermit wird die Anzahl der Toast.show()-Aufrufe begrenzt, um zu verhindern, dass der Nutzer innerhalb kurzer Zeit zu viele Benachrichtigungen erhält. Der Versuch, mehr Toasts anzuzeigen als in einem dass der Toast verworfen wird.

REQUIRE_EXACT_ALARM_PERMISSION

Änderungs-ID: 171306433
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, müssen Apps die Manifest.permission.SCHEDULE_EXACT_ALARM Berechtigung, um APIs zum Einstellen exakter Alarme zu verwenden, wie z. B. setExactAndAllowWhileIdle(int, long, PendingIntent) und setAlarmClock(AlarmClockInfo, PendingIntent).

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_ACTIVE_DATA_SUB_ID

Change ID: 182478738
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, müssen Apps die Berechtigung Manifest.permission.READ_PHONE_STATE in um TelephonyCallback.ActiveDataSubscriptionIdListener aufzurufen.

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_CELL_INFO

Änderungs-ID: 184323934
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, benötigen die Berechtigung Manifest.permission.READ_PHONE_STATE, um TelephonyCallback.CellInfoListener aufzurufen.

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_DISPLAY_INFO

Änderungs-ID: 183164979
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, benötigen die Berechtigung Manifest.permission.READ_PHONE_STATE, um TelephonyCallback.DisplayInfoListener aufzurufen.

RESTRICT_ADB_BACKUP

Änderungs-ID: 171032338
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird adb backup automatisch für Debug-fähige Apps aktiviert (android:debuggable auf true gesetzt). für andere Apps nicht verfügbar ist.

RESTRICT_DOMAINS

Änderungs-ID: 175408749
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, ist die aktualisierte Version der App Links Verification API erforderlich. Das bedeutet, dass eine App Domains in einem Intent-Filter angeben muss, der Folgendes enthält:

  • android:autoVerify="true"
  • Intent.ACTION_VIEW
  • Intent.CATEGORY_BROWSABLE
  • Intet.CATEGORY_DEFAULT
  • Nur IntentFilter.SCHEME_HTTP und/oder IntentFilter.SCHEME_HTTPS, keine anderen Schemata

In früheren Android-Versionen war Intent.CATEGORY_BROWSABLE keine Voraussetzung, andere Schemas waren zulässig und das Festlegen von autoVerify in einem beliebigen Intent-Filter auf true würde implizit so tun, als wären alle Intent-Filter auf autoVerify="true" gesetzt.

SECURITY_EXCEPTION_ON_INVALID_ATTRIBUTION_TAG_CHANGE

Change ID: 151105954
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Bei Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind, wird erzwungen, dass alle attributionTags, die an noteOp(String, int, String), noteProxyOp(String, String) und startOp(String, int, String) gesendet werden, im Manifest des Pakets definiert sind, das als Parameter der Methoden angegeben ist.

Um diese Änderung zu ermöglichen, muss sowohl das Paket, das noteOp(String, int, String) aufruft, sowie für das als Parameter der Methode angegebene Paket muss diese Änderung aktiviert sein.

SELINUX_LATEST_CHANGES

Änderungs-ID: 143539591
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, müssen die aktuellen SELinux-Änderungen aktiviert werden. Änderung für eine App-Ausrichtung deaktivieren Android 12 (API-Level 31) oder höher ist ein Nullbetrieb. Dies hat keine Auswirkungen auf Apps, die eine freigegebene Nutzer-ID verwenden.

SETTINGS_API_V2

Änderungs-ID: 178111421
Standardstatus: Für alle Apps aktiviert.

Die neue API für Nutzereinstellungen zur Überprüfung von Domains, die in Intent-Filtern in AndroidManifest.xml mit autoVerify=true gekennzeichnet sind, ist in der aktuellen Plattformvorschau noch nicht implementiert. Derzeit ist es möglich, eine Vorschau der neuen Änderungen an den Nutzereinstellungen zu sehen, indem du diese ChangeId aktivierst und den Befehl adb shell pm set-app-links-user-selection oder ähnliche Befehle verwendest.

USE_SHORT_FGS_USAGE_INTERACTION_TIME

Änderungs-ID: 183972877
Standardstatus: Aktiviert für Apps, die auf Android 12 (API-Level 31) oder höher ausgerichtet sind.

Für Apps, die für Android 12 (API-Level 31) und höher bestimmt sind, wird festgelegt, ob eine kürzere Zeitüberschreitung verwendet wird, bevor der Standby-Bucket auf ACTIVE erhöht wird, wenn Apps einen Dienst im Vordergrund starten.