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

Abbildung 1. Auf dem Bildschirm „Änderungen der App-Kompatibilität“ in den Entwickleroptionen werden die Änderungen aufgeführt, die ein-/ausgeschaltet werden können.

Auf dieser Seite werden alle Verhaltensänderungen im Rahmen des Kompatibilitäts-Frameworks von Android 12 (API-Level 31) beschrieben. Verwende diese Liste zusammen mit den Entwickleroptionen und ADB-Befehlen, um deine App zu testen und zu debuggen, während du dich auf die Unterstützung und Zielsetzung von Android 12 vorbereitest.

Mit den Tools des Kompatibilitäts-Frameworks können Sie beispielsweise Folgendes tun:

  • Zielgerichtete Änderungen testen, ohne die targetSdkVersion der App tatsächlich zu ändern Mit den Ein-/Aus-Schaltflächen können Sie die Aktivierung bestimmter gezielter Verhaltensänderungen erzwingen, um die Auswirkungen auf Ihre vorhandene Anwendung zu bewerten.
  • Konzentrieren Sie sich beim Testen ausschließlich auf bestimmte Änderungen. Mit den Ein-/Aus-Schaltflächen können Sie alle Zieländerungen deaktivieren, mit Ausnahme derer, die Sie testen möchten.
  • Ein/Aus-Schaltfläche über ADB verwalten Mit ADB-Befehlen können Sie die ein- und ausschaltbaren Änderungen in Ihrer automatisierten Testumgebung aktivieren und deaktivieren.
  • Beschleunigen Sie die Fehlerbehebung mit Standard-Änderungs-IDs. Umschaltbare Änderungen haben jeweils eine eindeutige ID und einen eindeutigen Namen, mit denen Sie die Ursache in der Logausgabe schnell beheben können.

Ausführliche Informationen zur Verwendung der Tools in den einzelnen Anwendungsfällen finden Sie unter Kompatibilitäts-Framework-Tools.

Verhaltensänderungen im Kompatibilitäts-Framework

Die Liste in diesem Abschnitt beschreibt alle Verhaltensänderungen, die im Kompatibilitäts-Framework in Android 12 enthalten sind.

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

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

Wenn diese Option aktiviert ist, wird unabhängig vom Windowing-Modus das Display API-Sandboxing auf ein Paket angewendet. Die Display APIs stellen immer die App-Grenzen bereit.

Weitere Informationen zu dieser Änderung findest du auf der Seite zu Änderungen des Android 12-Verhaltens im Abschnitt zu eingestellten Anzeigemethoden.

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 des Frameworks für erweitertes Autofill Vorschläge ohne Text (z. B. Bilder) bereitstellen (siehe Autofill-Dienste). Damit eine Anwendung diese Vorschläge verarbeiten kann, muss sie normalerweise die OnReceiveContentListener API implementieren.

Um die Akzeptanz dieser API für Apps, in denen zuvor die InputConnection.commitContent(InputContentInfo, int, Bundle) API implementiert wurde, reibungsloser zu gestalten, verwenden wir diese API als Fallback, wenn OnReceiveContentListener noch nicht in der App implementiert ist. Dieses 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, die OnReceiveContentListener API implementieren müssen, um Vorschläge ohne Text zu akzeptieren.

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 in allen Fenstern 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) und 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, generieren unveränderliche PendingIntent -Objekte, die an Standort-APIs übergeben werden, 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 LocationRequest-System-APIs nicht mit Standortanfragen vom Typ PendingIntent verwendet werden.

BLOCK_UNTRUSTED_TOUCHES

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

Um die Systemsicherheit und eine positive Nutzererfahrung zu gewährleisten, verhindert Android 12, dass Apps Touch-Ereignisse verarbeiten, bei denen die App durch ein Overlay auf unsichere Weise blockiert wird.

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 unmittelbar vor dem Fortsetzen erhält.

CAMERA_MIC_INDICATORS_NOT_PRESENT

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

Gibt an, dass dieses Gerät Kamera- und Mikrofonanzeigen unterstützt. Ist false, falls vorhanden, da die Methode CompatChanges#isChangeEnabled true zurückgibt, 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 SecurityException ausgelöst, wenn sie sich im Status „Abgelehnt“ befinden und versuchen, eine Nachricht an eine Nano-App 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.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird SecurityException ausgelöst, wenn sie keine HIGH_SAMPLING_RATE_SENSORS-Berechtigung haben, im Debug-Modus ausgeführt werden und Abtastraten von über 200 Hz anfordern.

DELIVER_HISTORICAL_LOCATIONS

Änderungs-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, können Standort-Clients unter bestimmten Umständen Verlaufsdaten aus der Zeit vor dem heutigen Datum abrufen.

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 vorteilhafter ist (z. B. wenn die App an Surface.setFrameRate(float, int) aufgerufen wird). Apps erhalten Choreographer.postFrameCallback(Choreographer.FrameCallback)-Callbacks und Rückdruck bei der gedrosselten Framerate. Apps verwenden Display.getRefreshRate() und Display.Mode.getRefreshRate(), um die Aktualisierungsrate des Bildschirms zu ermitteln. Display.getRefreshRate() gibt immer die Framerate der Anwendung und nicht die Aktualisierungsrate des physischen Displays zurück, damit die Apps die Frametaktung korrekt ausführen können. Display.Mode.getRefreshRate() gibt die Framerate der App zurück, wenn sie auf einen vorherigen Release kompiliert wurde. Ab Android 12 (API-Level 31) wird die Aktualisierungsrate auf dem physischen Display zurückgegeben.

DOWNSCALED

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

Diese Änderung ist der Gatekeeper für alle App-internen Änderungen zum Herunterskalieren des Zwischenspeichers. Wenn Sie diese Änderung aktivieren, können die folgenden Skalierungsfaktoren angewendet werden:

Wenn diese Änderung für ein Anwendungspaket aktiviert ist, wird die Größe der Anwendung zwangsweise auf den höchsten aktivierten Skalierungsfaktor angepasst. Beispielsweise wird 80% verwendet, wenn sowohl 80% als auch 70 % (DOWNSCALE_80 und DOWNSCALE_70) aktiviert sind.

DOWNSCALE_30

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

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

DOWNSCALE_35

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

Wenn DOWNSCALED ebenfalls aktiviert ist und diese Änderung für ein Paket aktiviert ist, wird die App davon ausgegangen, dass sie auf einem Display mit 35% der vertikalen und horizontalen Auflösung des tatsächlichen Bildschirms ausgeführt wird.

DOWNSCALE_40

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

Wenn DOWNSCALED ebenfalls aktiviert ist und diese Änderung für ein Paket aktiviert ist, wird die App davon ausgegangen, dass sie auf einem Display mit 40% der vertikalen und horizontalen Auflösung des tatsächlichen Bildschirms ausgeführt wird.

DOWNSCALE_45

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

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

DOWNSCALE_50

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

Wenn DOWNSCALED ebenfalls aktiviert ist und diese Änderung für ein Paket aktiviert ist, wird die App davon ausgegangen, dass sie auf einem Display mit 50% der vertikalen und horizontalen Auflösung des tatsächlichen Bildschirms ausgeführt wird.

DOWNSCALE_55

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

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

DOWNSCALE_60

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

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

DOWNSCALE_65

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

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

DOWNSCALE_70

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

Wenn DOWNSCALED ebenfalls aktiviert ist und diese Änderung für ein Paket aktiviert ist, wird die App davon ausgegangen, dass sie auf einem Display mit 70% der vertikalen und horizontalen Auflösung des tatsächlichen Bildschirms ausgeführt wird.

DOWNSCALE_75

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

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

DOWNSCALE_80

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

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

DOWNSCALE_85

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

Wenn DOWNSCALED ebenfalls aktiviert ist und diese Änderung für ein Paket aktiviert ist, wird die App davon ausgegangen, dass sie auf einem Display mit 85% der vertikalen und horizontalen Auflösung des tatsächlichen Bildschirms ausgeführt wird.

DOWNSCALE_90

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

Wenn DOWNSCALED ebenfalls aktiviert ist und diese Änderung für ein Paket aktiviert ist, wird die App davon ausgegangen, dass sie auf einem Display mit 90% der vertikalen und horizontalen Auflösung des tatsächlichen Bildschirms ausgeführt wird.

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) und höher ausgerichtet sind, sollten jede Fenstergröße verarbeiten können, einschließlich Fenstergrößen über 1080p. Bei Apps, die auf frühere Android-Versionen ausgerichtet sind, wird keine Windows-Größe mit einer Auflösung von mehr als 1080p erwartet. Daher wird die Windows-Version 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 mit 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

Änderungs-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 API-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.

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

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 mit 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 den Zugriff auf externen Rohdatenspeicher 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. In der Praxis sind alle Alarme, die kleinere Fenster erfordern, die gleichen wie exakte Alarme und sollten die entsprechenden bereitgestellten APIs wie setExact(int, long, PendingIntent) verwenden. Bei einem ungenauen Alarm mit kürzeren Fenstern werden die Fenster 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.

Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, müssen Abhängigkeiten für die öffentlichen nativen gemeinsam genutzten Bibliotheken deklarieren, die vom Gerätehersteller mithilfe des uses-native-library-Tags im AndroidManifest.xml definiert werden. Wenn eine der Abhängigkeiten nicht erfüllt werden kann, z. B. wenn eine der Abhängigkeiten nicht vorhanden ist, installiert der Paketmanager die App nicht. Die Abhängigkeit kann mit dem Attribut android:required im Tag optional angegeben werden. In diesem Fall wird die Installation nicht beendet, wenn die Abhängigkeit nicht erfüllt wird.

Nach der Installation erhält eine App nur die nativen gemeinsam genutzten Bibliotheken, die im App-Manifest angegeben sind. Das Aufrufen von dlopen für eine native gemeinsam genutzte Bibliothek, die nicht im App-Manifest angezeigt wird, schlägt fehl, selbst wenn die Datei tatsächlich auf dem Gerät vorhanden ist.

ENFORCE_STRICT_QUERY_BUILDER

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

Wenn diese Option aktiviert ist, prüft der SQLiteQueryBuilder alle CalendarProvider2-Abfrageauswahl anhand von schädlichen Argumenten.

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.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird eingeschränkt, wann Apps Dienste im Vordergrund starten dürfen, 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 auf Android 12 (API-Level 31) und höher ausgerichtet sind, ermöglicht das System, eine IllegalStateException auszugeben, 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, musst du den InputConnection beenden, wenn das Gerät non-interactive wird.

Wenn das Gerät durch die aktuelle input method aktiviert wird, ist die aktuelle Eingabeverbindung finished, wenn das Gerät nicht interaktiv wird.

Wenn diese Option nicht aktiviert ist, wird die aktuelle Eingabeverbindung ohne Meldung deaktiviert, wenn die Geräte nicht mehr interaktiv sind. Wenn das Gerät wieder interaktiv wird, wird ein onFinishInput()-onStartInput()-Paar gesendet.

FORCE_DISABLE_HEVC_SUPPORT

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

Erzwingen, dass eine App die HEVC-Medienfunktion nicht unterstützt. Für Apps sollten die unterstützten Medienfunktionen in ihrem Manifest deklariert werden. Dieses Flag kann jedoch verwendet werden, um eine App dazu zu zwingen, HEVC nicht zu unterstützen. Dadurch wird die Transcodierung beim Zugriff auf in HEVC codierte Medien erzwungen. Durch das Festlegen dieses Flags werden alle Standardeinstellungen für Apps auf Betriebssystemebene überschrieben. Sie ist standardmäßig deaktiviert, d. h., die Standardeinstellungen des Betriebssystems haben Vorrang. Wenn sowohl dieses Flag als auch FORCE_ENABLE_HEVC_SUPPORT aktiviert sind, ignoriert das Betriebssystem beide Flags.

FORCE_ENABLE_HEVC_SUPPORT

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

Erzwingen, dass eine App die HEVC-Medienfunktion unterstützt. Apps sollten die unterstützten Medienfunktionen in ihrem Manifest deklarieren. Dieses Flag kann jedoch verwendet werden, um eine App zur Unterstützung von HEVC zu zwingen. Dadurch wird die Transcodierung beim Zugriff auf in HEVC codierte Medien vermieden. Durch das Festlegen dieses Flags werden alle Standardeinstellungen auf Betriebssystemebene für Apps überschrieben. Sie ist standardmäßig deaktiviert, was bedeutet, dass die Standardeinstellungen des Betriebssystems Vorrang haben. Wenn sowohl dieses Flag als auch FORCE_DISABLE_HEVC_SUPPORT aktiviert sind, ignoriert das Betriebssystem beide Flags.

FORCE_NON_RESIZE_APP

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

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. Die Größenanpassung ist nur im Vollbildfenstermodus zulässig, die App wird jedoch nicht in den Mehrfenstermodus mit anpassbarer Größe erzwungen.

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.

Bei 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

Änderungs-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 eine leere Sprachliste zurück, sofern sie nicht festgelegt ist. Stattdessen wird die Standardsprache des Systems verwendet.

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.

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

KEYSTORE_OPERATION_CREATION_MAY_FAIL

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

Wenn diese Option aktiviert ist, schlägt das Erstellen von Schlüsselspeichervorgängen gemäß der neuen Bereinigungsstrategie möglicherweise fehl. Der Schlüsselspeicher wurde bisher unter der Annahme betrieben, dass die Erstellung kryptografischer Vorgänge immer erfolgreich ist. Das KeyMint-Back-End hat jedoch nur eine begrenzte Anzahl von Vorgangsslots.

Damit "unendliche" Vorgangsslots weiterhin angezeigt werden, bereinigt der Schlüsselspeicher-Daemon die am stärksten zuletzt verwendeten Vorgänge, wenn kein verfügbarer Vorgangsslot vorhanden ist. Infolgedessen können fehlerfreie Vorgänge vorzeitig beendet werden. Dadurch konnte AndroidKeystore Denial-of-Service (DoS) und einer unbeabsichtigten Livelock-Funktion nutzen. Wenn beispielsweise mehrere Anwendungen gleichzeitig aufgrund von Optimierungen der Energieverwaltung aufgeweckt werden und versucht haben, kryptografische Vorgänge auszuführen, beenden sie die Vorgänge der anderen Anwendungen, ohne dass ein Fortschritt erzielt wird.

Um Livelocks zu überwinden und DoS-Versuchen zu vermeiden, haben wir die Bereinigungsstrategie so geändert, dass Clients bevorzugt werden, die kurzzeitig nur wenige Vorgangsslots verwenden. Infolgedessen werden einzelne Vorgänge, die nicht länger als 5 Sekunden inaktiv sind, fast immer ohne Einschränkungen durch die Bereinigungsstrategie abgeschlossen. Es gibt immer noch einige Vorgänge im Zusammenhang mit der Dateisystemverschlüsselung, die auch diese Vorgänge kürzen können. Diese Fälle sind jedoch extrem selten. Als Nebeneffekt dieser neuen Bereinigungsstrategie kann die Erstellung jetzt fehlschlagen, wenn der Client eine geringere Pruning-Leistung als alle vorhandenen Vorgänge hat.

Bereinigungsstrategie: Um einen geeigneten Kandidaten zu finden, wird der Malus für den Aufrufer und jeden vorhandenen Vorgang berechnet. Der Malus ist der Kehrwert der Beschneidungskraft (Aufrufer) oder der Beschneidungswiderstandskraft (bestehender Vorgang). Damit der Aufrufer einen Vorgang bereinigen kann, muss er einen Vorgang mit einem höheren Malus als seinem eigenen finden. Weitere Informationen zur Bereinigungsstrategie findest du in der Implementierung von operation.rs. Unter Android 11 (API-Level 30) und niedriger fragt KeyStore2 den Schlüsselspeicher-Daemon nach einem kostenlosen Vorgangsslot ab. Bei Apps, die auf Android 11 (API-Level 30) und niedriger ausgerichtet sind, scheint die Initialisierung der Chiffre- und Signaturobjekte immer noch erfolgreich zu sein. Es kann jedoch länger dauern, bis ein Vorgang abgeschlossen ist. Alle Android-Versionen profitieren von einer faireren Planung von Betriebsslots und besseren Chancen auf den erfolgreichen Abschluss eines Vorgangs.

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.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, kann Intent.ACTION_CLOSE_SYSTEM_DIALOGS nur gesendet werden, wenn die App auch die Berechtigung android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS hat. Dies ist die restriktivere Version von #DROP_CLOSE_SYSTEM_DIALOGS, bei der erwartet wird, dass die App den Intent Intent.ACTION_CLOSE_SYSTEM_DIALOGS nicht mehr sendet, sobald sie auf Android 12 (API-Level 31) oder höher ausgerichtet ist.

LOCK_DOWN_COLLAPSE_STATUS_BAR

Änderungs-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 aus Sicherheitsgründen die Berechtigung Manifest.permission.STATUS_BAR erforderlich, um die Bereiche der Statusleiste zu minimieren. Dieser wurde von Malware ausgenutzt, um zu verhindern, dass der Nutzer auf kritische Benachrichtigungen zugreift.

LOW_POWER_EXCEPTIONS

Änderungs-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, werden alle LocationRequest-Objekte, die als Ausnahmen mit geringem Stromverbrauch gekennzeichnet sind, angezeigt, wenn der Aufrufer die Berechtigung LOCATION_HARDWARE nicht hat, anstatt den Teil der Anfrage mit geringem Stromverbrauch ohne Ton zu verwerfen.

MISSING_EXPORTED_FLAG

Änderungs-ID:150232615
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, muss immer dann ein expliziter Wert für das Attribut android:exported angegeben werden, wenn ein Intent-Filter definiert ist.

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

NATIVE_HEAP_POINTER_TAGGING_APP_ZYGOTE

Änderungs-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, wird bei nativen Heap-Zuweisungen im AppZygote-Prozess und in den Nachfolgern ein Tag ungleich null im höchstwertigen Byte verwendet.

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

NATIVE_HEAP_ZERO_INIT

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

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 Prüfung von asynchronen Speicher-Tags (ASYNC). Dieses Flag betrifft nur 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 betrifft nur Hardware, die die ARM Memory Tagging Extension (MTE) unterstützt. Wenn sowohl NATIVE_MEMTAG_ASYNC als auch diese Option aktiviert sind, hat diese Option Vorrang und MTE ist im SYNC-Modus aktiviert.

NEVER_SANDBOX_DISPLAY_APIS

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

Wenn diese Option aktiviert ist, wird verhindert, dass die Display API-Sandbox auf eine Letterbox- oder SCM-Aktivität angewendet wird. Die Display APIs stellen weiterhin DisplayArea-Grenzen bereit.

Weitere Informationen zu dieser Änderung findest du auf der Seite zu Änderungen am Verhalten von Android 12 im Abschnitt zu eingestellten Anzeigemethoden.

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 Benachrichtigungs-Listenern, neue genauere Kündigungsgründe zu verstehen.

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 der App-Leistung und Nutzerfreundlichkeit dürfen Apps, die auf Android 12 ausgerichtet sind, keine Dienste oder Übertragungsempfänger als Benachrichtigungstrampolin verwenden.

Weitere Informationen zu dieser Änderung finden Sie unter Benachrichtigungs-Trampoline können nicht über Dienste oder Übertragungsempfä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 SDK-Zielversion 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 bestimmt alle Änderungen, die ein bestimmtes minimales Seitenverhältnis erzwingen. Wenn Sie diese Änderung aktivieren, können die folgenden Mindestseitenverhältnisse angewendet werden:

Wenn diese Änderung für ein App-Paket aktiviert ist, wird das im Manifest der App angegebene Mindestseitenverhältnis mit dem größten aktivierten 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 OVERRIDE_MIN_ASPECT_RATIO ebenfalls aktiviert ist und diese Änderung für ein Paket aktiviert wird, wird das Mindestseitenverhältnis der Aktivität auf einen hohen Wert festgelegt, der durch OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE definiert ist.

OVERRIDE_MIN_ASPECT_RATIO_MEDIUM

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

Wenn OVERRIDE_MIN_ASPECT_RATIO ebenfalls aktiviert ist und diese Änderung für ein Paket aktiviert wird, wird das minimale Seitenverhältnis der Aktivität auf einen mittleren Wert gesetzt, wie durch OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE definiert.

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.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, musst du die Veränderlichkeit aller PendingIntent-Objekte angeben, die von deiner 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.

Admin-Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, können DevicePolicyManager.setPasswordQuality(ComponentName, int) nicht verwenden, um die Passwortqualität auf der Instanz DevicePolicyManager festzulegen, die durch Aufrufen von DevicePolicyManager.getParentProfileInstance(ComponentName) abgerufen wird. Stattdessen sollten sie DevicePolicyManager.setRequiredPasswordComplexity(int) verwenden, um grobe Passwortanforderungen für das gesamte Gerät festzulegen.

RATE_LIMIT_TOASTS

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

Aktiviert die Ratenbegrenzung für die Anzahl von Toast.show()-Aufrufen, um zu verhindern, dass der Nutzer mit zu vielen Toasts in einem begrenzten Zeitraum überlastet wird. Wird versucht, innerhalb eines bestimmten Zeitraums mehr Toasts anzuzeigen als zulässig, wird der Toast verworfen.

REQUIRE_EXACT_ALARM_PERMISSION

Änderungs-ID:171306433
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, müssen Apps die Berechtigung Manifest.permission.SCHEDULE_EXACT_ALARM haben, damit sie APIs zum Einstellen exakter Alarme verwenden können, z. B. setExactAndAllowWhileIdle(int, long, PendingIntent) und setAlarmClock(AlarmClockInfo, PendingIntent).

REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_ACTIVE_DATA_SUB_ID

Änderungs-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 haben, 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.

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

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 haben, 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 Apps aktiviert, die Debug-fähig sind (android:debuggable ist auf true gesetzt) und für keine anderen Apps nicht verfügbar.

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) und höher ausgerichtet sind, ist die aktualisierte Form der App Links Verification API erforderlich. Diese Anforderung bedeutet, dass eine Anwendung Domains in einem Intent-Filter deklarieren 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, ohne andere Schemas

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

SECURITY_EXCEPTION_ON_INVALID_ATTRIBUTION_TAG_CHANGE

Änderungs-ID:151105954
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 erzwungen, dass alle an noteOp(String, int, String), noteProxyOp(String, String) und startOp(String, int, String) gesendeten attributionTags im Manifest des Pakets definiert sind, das als Parameter der Methoden angegeben ist.

Damit diese Änderung aktiviert werden kann, muss diese Änderung sowohl für das Paket, das noteOp(String, int, String) aufruft, als auch für das Paket, das als Parameter der Methode angegeben ist, 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. Wenn Sie diese Änderung für eine App deaktivieren, die auf Android 12 (API-Level 31) oder höher ausgerichtet ist, ist dies ein Leerbefehl. Dies hat keine Auswirkungen auf Apps, die eine gemeinsame Nutzer-ID verwenden.

SETTINGS_API_V2

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

Die neue API der Nutzereinstellungen zum Verifizieren von Domains, die in AndroidManifest.xml-Intent-Filtern mit autoVerify=true gekennzeichnet sind, ist noch nicht in der aktuellen Plattformvorschau implementiert. Derzeit ist es möglich, eine Vorschau der Änderungen der neuen Nutzereinstellungen anzuzeigen, indem Sie diese ChangeID aktivieren und adb shell pm set-app-links-user-selection und ähnliche Befehle verwenden.

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.

Legt für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, fest, ob ein kürzeres Zeitlimit verwendet werden soll, bevor der Stand-by-Bucket auf ACTIVE hochgestuft wird, wenn Apps einen Dienst im Vordergrund starten.