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

Abbildung 1: Auf dem Bildschirm „Änderungen bei der Kompatibilität von Apps“ in den Entwickleroptionen werden die Änderungen aufgeführt, die Sie aktivieren oder deaktivieren können.

Auf dieser Seite werden alle Verhaltensänderungen beschrieben, die Teil des Kompatibilitätsframeworks in Android 12 (API-Level 31) sind. Verwenden Sie diese Liste in Verbindung mit den Entwickleroptionen und ADB-Befehlen, um Ihre App zu testen und zu debuggen, während Sie die Unterstützung und Ausrichtung auf Android 12 vorbereiten.

Mit den Tools des Kompatibilitätsframeworks können Sie unter anderem Folgendes tun:

  • Gezielte Änderungen testen, ohne die targetSdkVersion der App tatsächlich zu ändern: Mit den Ein/Aus-Schaltern können Sie bestimmte Änderungen des Zielverhaltens erzwingen, um die Auswirkungen auf Ihre bestehende App zu bewerten.
  • Konzentrieren Sie sich beim Testen nur auf bestimmte Änderungen. Anstatt alle Änderungen auf einmal vornehmen zu müssen, können Sie mit den Ein/Aus-Schaltern alle Änderungen deaktivieren, die Sie nicht testen möchten.
  • Schalter über adb verwalten Mit adb-Befehlen können Sie die umschaltbaren Änderungen in Ihrer automatisierten Testumgebung aktivieren und deaktivieren.
  • Fehler mithilfe von Standard-Änderungs-IDs schneller beheben: Jede umschaltbare Änderung hat eine eindeutige ID und einen eindeutigen Namen, mit denen Sie die Ursache in der Protokollausgabe schnell debuggen können.

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

Verhaltensänderungen im Kompatibilitäts-Framework

In der Liste in diesem Abschnitt wird jede Verhaltensänderung beschrieben, die im Kompatibilitätsframework in Android 12 enthalten ist.

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

Verhaltensänderungen, die dem Kompatibilitäts-Framework in Android 12 hinzugefügt wurden

ALWAYS_SANDBOX_DISPLAY_APIS

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

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

Weitere Informationen zu dieser Änderung finden Sie auf der Seite zu Verhaltensänderungen in Android 12 im Abschnitt Eingestellte 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 automatisches Ausfüllen (siehe Autofill-Dienste) Vorschläge bereitstellen, die nicht nur aus Text bestehen, z. B. Bilder. Damit eine App diese Vorschläge verarbeiten kann, muss sie normalerweise die OnReceiveContentListener API implementieren.

Damit die Einführung dieser API für Apps, die die InputConnection.commitContent(InputContentInfo, int, Bundle)-API bereits 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 der Fallback deaktiviert. Apps, die auf Android 12 (API-Level 32) und höher ausgerichtet sind, müssen die OnReceiveContentListener API implementieren, um Vorschläge zu akzeptieren, die nicht aus Text bestehen.

BLOCK_FLAG_SLIPPERY

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

Für Apps, die unter Android 12 (API‑Level 31) ausgeführt werden, wird geprüft, ob FLAG_SLIPPERY mit Fenstern 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. Wenn ja, 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.

Bei Apps, die auf Android 12 (API‑Level 31) und höher ausgerichtet sind, wird für unveränderliche PendingIntent-Objekte, die an Standort-APIs übergeben werden, eine IllegalArgumentException. generiert.

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.

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

BLOCK_UNTRUSTED_TOUCHES

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

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

Weitere Informationen

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.

Für Apps, die auf Android 12 (API-Level 32) und höher ausgerichtet sind, wird der Lebenszyklus des Aktivitätsergebnisses korrigiert, um sicherzustellen, dass eine Aktivität das Aktivitätsergebnis kurz 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 Mikrofonsymbole unterstützt. Ist false, wenn 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 Berechtigungsgruppen fehlerhaft sind. Berechtigungsgruppen sollten nur zwischen Apps geteilt werden, die ein gemeinsames Zertifikat verwenden. Wenn eine Berechtigung zu einer Gruppe gehört, muss diese Gruppe auch 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 eine SecurityException ausgelöst, wenn sie sich im Autorisierungsstatus „Verweigert“ 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 eine SecurityException ausgelöst, wenn sie nicht die Berechtigung HIGH_SAMPLING_RATE_SENSORS haben, im Debug-Modus ausgeführt werden und Abtastraten anfordern, die schneller als 200 Hz sind.

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 Standortclients unter Umständen frühere Standorte (vor der aktuellen Zeit) empfangen.

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, wird Abwärtskompatibilität für Änderungen in TelephonyDisplayInfo bereitgestellt.

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 vorzuziehen ist (z. B. wenn die App Surface.setFrameRate(float, int) aufgerufen hat). Apps erhalten Choreographer.postFrameCallback(Choreographer.FrameCallback)-Callbacks und Backpressure bei der gedrosselten Framerate. 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 physische Aktualisierungsrate des Displays zurück, damit Apps das Frame-Pacing korrekt ausführen können. Display.Mode.getRefreshRate() gibt die App-Bildrate zurück, wenn sie für eine frühere Version kompiliert wurde. Ab Android 12 (API‑Level 31) wird die physische Aktualisierungsrate des Displays zurückgegeben.

DOWNSCALED

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

Diese Änderung ist die Voraussetzung für alle Änderungen am Puffer-Downscaling pro App. Wenn Sie diese Änderung aktivieren, können die folgenden Skalierungsfaktoren angewendet werden:

Wenn diese Änderung für ein App-Paket aktiviert ist, wird die Größe der App auf den höchsten aktivierten Skalierungsfaktor angepasst. Wenn beispielsweise sowohl 80% als auch 70 % (DOWNSCALE_80 und DOWNSCALE_70) aktiviert sind, werden 80 % verwendet.

DOWNSCALE_30

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

Wenn DOWNSCALED ebenfalls aktiviert ist, wird die App durch die Aktivierung dieser Änderung für ein Paket gezwungen, davon auszugehen, 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: Für alle Apps deaktiviert.

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

DOWNSCALE_40

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

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

DOWNSCALE_45

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

Wenn DOWNSCALED ebenfalls aktiviert ist, wird die App durch Aktivieren dieser Änderung für ein Paket gezwungen, davon auszugehen, 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 die App durch die Aktivierung dieser Änderung für ein Paket gezwungen, davon auszugehen, dass sie auf einem Display mit 50% der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_55

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

Wenn DOWNSCALED ebenfalls aktiviert ist, wird die App durch die Aktivierung dieser Änderung für ein Paket gezwungen, davon auszugehen, 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 DOWNSCALED ebenfalls aktiviert ist, wird die App durch die Aktivierung dieser Änderung für ein Paket gezwungen, davon auszugehen, 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 DOWNSCALED ebenfalls aktiviert ist, wird die App durch die Aktivierung dieser Änderung für ein Paket gezwungen, davon auszugehen, 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: Für alle Apps deaktiviert.

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

DOWNSCALE_75

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

Wenn DOWNSCALED ebenfalls aktiviert ist, wird die App durch die Aktivierung dieser Änderung für ein Paket gezwungen, davon auszugehen, 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 DOWNSCALED ebenfalls aktiviert ist, wird die App durch die Aktivierung dieser Änderung für ein Paket gezwungen, davon auszugehen, 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 die App durch die Aktivierung dieser Änderung für ein Paket gezwungen, davon auszugehen, dass sie auf einem Display mit 85% der vertikalen und horizontalen Auflösung des tatsächlichen Displays ausgeführt wird.

DOWNSCALE_90

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

Wenn DOWNSCALED ebenfalls aktiviert ist, wird die App durch die Aktivierung dieser Änderung für ein Paket gezwungen, davon auszugehen, dass sie auf einem Display mit 90% der vertikalen und horizontalen Auflösung des tatsächlichen Displays 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, müssen alle Fenstergrößen unterstützen, einschließlich Fenstergrößen über 1080p. Apps, die auf frühere Android-Versionen ausgerichtet sind, erwarten keine Fenster mit einer Auflösung von mehr als 1080p. Daher werden ihre Fenster bei Bedarf auf 1080p herunterskaliert.

DROP_CLOSE_SYSTEM_DIALOGS

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

Um die Nutzerkontrolle bei der Interaktion mit Apps und dem System zu verbessern, ist die Intent-Aktion ACTION_CLOSE_SYSTEM_DIALOGS ab Android 12 nicht mehr verfügbar.

Weitere Informationen zu dieser Änderung

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.

Apps, die auf Android 12 (API‑Level 31) und höher ausgerichtet sind, können private Dateien nicht über den MediaProvider einfügen oder aktualisieren.

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 für APIs aktiviert, die den Anrufstatus abfragen und benachrichtigen, 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 READ_PHONE_NUMBERS- oder READ_PRIVILEGED_PHONE_STATE-Schutzmaßnahmen 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 von Dateien aus einem kürzlich ungemounteten Volume in MediaProvider#query aufzunehmen.

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 rohen Zugriff auf den externen Speicher 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.

Bei Apps, die auf Android 12 (API‑Level 31) und höher ausgerichtet sind, müssen alle ungenauen Alarme eine Mindestfenstergröße haben, die voraussichtlich im Bereich von einigen Minuten liegt. In der Praxis sind alle Alarme, die kleinere Zeitfenster erfordern, mit exakten Alarmen identisch und sollten die entsprechenden bereitgestellten APIs wie setExact(int, long, PendingIntent) verwenden. Bei ungenauen Alarmen mit kürzeren angegebenen Zeiträumen werden die Zeiträume 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 von den öffentlichen nativen gemeinsam genutzten Bibliotheken deklarieren, die vom Gerätehersteller mit dem uses-native-library-Tag in der AndroidManifest.xml definiert werden. Wenn eine der Abhängigkeiten nicht erfüllt werden kann, z. B. weil eine der Abhängigkeiten nicht vorhanden ist, wird die App vom Paketmanager nicht installiert. Die Abhängigkeit kann mit dem Attribut android:required im Tag als optional angegeben werden. In diesem Fall wird die Installation nicht abgebrochen, wenn die Abhängigkeit nicht erfüllt werden kann.

Nach der Installation erhält eine App nur die nativen gemeinsam genutzten Bibliotheken, die im App-Manifest angegeben sind. Der Aufruf von dlopen für eine native gemeinsam genutzte Bibliothek, die nicht im App-Manifest aufgeführt ist, schlägt fehl, auch wenn sie 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, werden mit SQLiteQueryBuilder alle CalendarProvider2-Abfrageauswahlen auf schädliche Argumente geprüft.

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.

Für Apps, die auf Android 12 (API‑Level 31) und höher ausgerichtet 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.

Bei Apps, die auf Android 12 (API‑Level 31) und höher ausgerichtet sind, muss die InputConnection abgeschlossen werden, wenn das Gerät non-interactive.

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

Wenn die Funktion nicht aktiviert ist, wird die aktuelle Eingabeverbindung stattdessen automatisch deaktiviert, wenn das Gerät nicht mehr interaktiv ist. Ein onFinishInput()- und ein onStartInput()-Paar werden gesendet, wenn das Gerät wieder interaktiv ist.

FORCE_DISABLE_HEVC_SUPPORT

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

Erzwingen, dass eine App die HEVC-Mediafunktion nicht unterstützt Apps sollten ihre unterstützten Media-Funktionen in ihrem Manifest deklarieren. Dieses Flag kann jedoch verwendet werden, um zu erzwingen, dass eine App HEVC nicht unterstützt. Dadurch wird die Transcodierung beim Zugriff auf in HEVC codierte Medien erzwungen. Wenn Sie dieses Flag festlegen, werden alle Standardeinstellungen auf Betriebssystemebene für Apps überschrieben. Sie ist standardmäßig deaktiviert, sodass die Standardeinstellungen des Betriebssystems Vorrang haben. 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-Mediafunktion unterstützt: Apps sollten ihre unterstützten Mediafunktionen in ihrem Manifest deklarieren. Mit diesem Flag kann jedoch erzwungen werden, dass eine App HEVC unterstützt. So wird das Transcodieren beim Zugriff auf in HEVC codierte Medien vermieden. Wenn Sie dieses Flag festlegen, werden alle Standardeinstellungen auf Betriebssystemebene für Apps überschrieben. Sie ist standardmäßig deaktiviert, sodass die Standardeinstellungen des Betriebssystems Vorrang haben. Wenn sowohl dieses Flag als auch FORCE_DISABLE_HEVC_SUPPORT aktiviert sind, werden beide Flags vom Betriebssystem ignoriert.

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. Wir erlauben das Ändern der Größe nur im Vollbildmodus, erzwingen aber nicht, dass die App in den Mehrfenstermodus mit anpassbarer Größe wechselt.

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 Eigenschaft 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 Ein- und Ausschlussregeln, die mit android:fullBackupContent angegeben werden, 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.

Bei Apps, die auf Android 12 (API‑Level 31) und höher ausgerichtet sind, gibt getSupportedLocales() jetzt eine leere Liste mit Gebietsschemas zurück, wenn sie nicht festgelegt ist, anstelle des standardmäßigen Systemgebietsschemas.

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 serverseitig und nicht clientseitig in BackupManager erzwungen.

KEYSTORE_OPERATION_CREATION_MAY_FAIL

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

Wenn diese Option aktiviert ist, kann das Erstellen von Keystore-Vorgängen gemäß der neuen Bereinigungsstrategie fehlschlagen. Keystore ging bisher davon aus, dass die Erstellung kryptografischer Vorgänge immer erfolgreich ist. Das KeyMint-Backend hat jedoch nur eine begrenzte Anzahl von Operationslots.

Um den Anschein von „unendlich“ vielen Vorgangsslots aufrechtzuerhalten, hat der Keystore-Daemon die zuletzt verwendeten Vorgänge entfernt, wenn kein Vorgangsslot verfügbar war. Daher können gute Vorgänge vorzeitig beendet werden. Dadurch war AndroidKeystore anfällig für DoS-Angriffe (Denial-of-Service) und unbeabsichtigte Livelocks. Wenn beispielsweise mehrere Apps aufgrund von Optimierungen der Energieverwaltung gleichzeitig aktiviert werden und versuchen, Kryptovorgänge auszuführen, beenden sie gegenseitig ihre Vorgänge, ohne dass Fortschritte erzielt werden.

Um Livelocks zu vermeiden und DoS-Versuche zu verhindern, haben wir die Bereinigungsstrategie so geändert, dass Clients bevorzugt werden, die nur kurz wenige Vorgangsslots verwenden. Daher werden einzelne Vorgänge, die nicht länger als 5 Sekunden inaktiv sind, fast immer ohne Beeinträchtigung durch die Bereinigungsstrategie abgeschlossen. Es gibt noch einige Vorgänge im Zusammenhang mit der Dateisystemverschlüsselung, die auch diese Vorgänge entfernen können, aber diese Fälle sind extrem selten. Als Nebeneffekt dieser neuen Bereinigungsstrategie kann das Erstellen jetzt fehlschlagen, wenn der Client eine geringere Bereinigungsleistung als alle vorhandenen Vorgänge hat.

Pruning-Strategie: Um einen geeigneten Kandidaten zu finden, berechnen wir den Malus für den Aufrufer und jeden vorhandenen Vorgang. Der Malus ist das Gegenteil der Pruning-Leistung (Aufrufer) oder des Pruning-Widerstands (bestehender Vorgang). Damit der Aufrufer einen Vorgang zurückstufen kann, muss er einen Vorgang mit einem höheren Malus als seinem eigenen finden. Weitere Informationen zur Bereinigungsstrategie finden Sie in der Implementierung von operation.rs. Unter Android 11 (API-Level 30) und niedriger fragt KeyStore2 den Keystore-Daemon nach einem kostenlosen Vorgangsslot ab. Bei Apps, die auf Android 11 (API‑Level 30) und niedriger ausgerichtet sind, sieht es weiterhin so aus, als ob die Initialisierung von Chiffrier- und Signaturobjekten immer erfolgreich ist. Es kann jedoch länger dauern, bis ein Vorgang ausgeführt wird. Alle Android-Versionen profitieren von einer gerechteren Zeitplanung für Vorgänge und einer höheren Wahrscheinlichkeit, dass ein Vorgang erfolgreich abgeschlossen wird.

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) 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 die App den Intent.ACTION_CLOSE_SYSTEM_DIALOGS-Intent nicht mehr senden darf, 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 die Berechtigung Manifest.permission.STATUS_BAR aus Sicherheitsgründen erforderlich, um die Statusleistenbereiche zu minimieren. Dies wurde von Malware ausgenutzt, um den Nutzer daran zu hindern, auf wichtige Benachrichtigungen zuzugreifen.

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, lösen alle LocationRequest-Objekte, die als „Low Power“ gekennzeichnet sind, Ausnahmen aus, wenn der Aufrufer nicht die Berechtigung LOCATION_HARDWARE hat. Der Low-Power-Teil der Anfrage wird also nicht mehr einfach ignoriert.

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) und höher ausgerichtet sind, muss für das Attribut android:exported ein expliziter Wert angegeben werden, wenn ein Intent-Filter definiert ist.

Weitere Informationen zu dieser Änderung

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.

Bei Apps, die auf Android 12 (API-Level 32) und höher ausgerichtet sind, wird für native Heap-Zuweisungen im AppZygote-Prozess und seinen untergeordneten Prozessen ein Tag ungleich null im höchstwertigen Byte verwendet.

Weitere Informationen zu dieser Änderung

NATIVE_HEAP_ZERO_INIT

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

Aktivieren Sie die automatische Nullinitialisierung von nativen Heap-Speicherzuweisungen.

NATIVE_MEMTAG_ASYNC

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

Aktivieren Sie die asynchrone (ASYNC) Prüfung von Speicher-Tags in diesem Prozess. Dieses Flag wirkt sich nur auf Hardware aus, die die ARM Memory Tagging Extension (MTE) unterstützt.

NATIVE_MEMTAG_SYNC

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

Aktiviert die synchrone (SYNC) Überprüfung von Speicher-Tags in diesem Prozess. Dieses Flag wirkt sich nur auf Hardware aus, 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 wird 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 das Display API-Sandboxing auf eine Letterbox- oder SCM-Aktivität angewendet wird. Die Display APIs liefern weiterhin die Grenzen von DisplayArea.

Weitere Informationen zu dieser Änderung finden Sie auf der Seite zu Verhaltensänderungen in Android 12 im Abschnitt Eingestellte Anzeigemethoden.

NOTIFICATION_CANCELLATION_REASONS

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

Benachrichtigungs-Listener können so neue, spezifischere Gründe für die Kündigung nachvollziehen.

NOTIFICATION_TRAMPOLINE_BLOCK

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

Um die App-Leistung und ‑Nutzerfreundlichkeit zu verbessern, dürfen Apps, die auf Android 12 ausgerichtet sind, keine Dienste oder Broadcast-Empfänger als Benachrichtigungs-Trampoline verwenden.

Weitere Informationen zu dieser Änderung finden Sie unter Notification trampolines cannot be created from services or broadcast receivers.

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 die Grundlage für alle Änderungen, die ein bestimmtes Mindestseitenverhä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 App-Manifest angegebene Mindestseitenverhältnis durch das größte aktivierte Seitenverhältnis überschrieben, sofern der Wert im App-Manifest nicht höher ist.

OVERRIDE_MIN_ASPECT_RATIO_LARGE

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

Wenn OVERRIDE_MIN_ASPECT_RATIO ebenfalls aktiviert ist, wird durch Aktivieren dieser Änderung für ein Paket das Mindestseitenverhältnis der Aktivität auf einen großen Wert festgelegt, der durch OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE definiert wird.

OVERRIDE_MIN_ASPECT_RATIO_MEDIUM

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

Wenn OVERRIDE_MIN_ASPECT_RATIO ebenfalls aktiviert ist, wird durch Aktivieren dieser Änderung für ein Paket das Mindestseitenverhältnis der Aktivität auf einen mittleren Wert festgelegt, der durch OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE definiert wird.

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) und höher ausgerichtet sind, müssen Sie die Veränderlichkeit aller PendingIntent-Objekte angeben, die von Ihrer App erstellt werden. Diese zusätzliche Anforderung verbessert die Sicherheit Ihrer App.

Weitere Informationen zu dieser Änderung

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.

Administrator-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 für die DevicePolicyManager-Instanz festzulegen, die durch Aufrufen von DevicePolicyManager.getParentProfileInstance(ComponentName) abgerufen wird. Stattdessen sollten sie DevicePolicyManager.setRequiredPasswordComplexity(int) verwenden, um geräteübergreifend grobgranulare Anforderungen an Passwörter festzulegen.

RATE_LIMIT_TOASTS

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

Ermöglicht die Ratenbegrenzung für die Anzahl der Toast.show()-Aufrufe, um zu verhindern, dass der Nutzer innerhalb eines begrenzten Zeitraums zu viele Benachrichtigungen erhält. Wenn in einem bestimmten Zeitraum versucht wird, mehr Benachrichtigungen als zulässig anzuzeigen, wird die Benachrichtigung 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, muss die Berechtigung Manifest.permission.SCHEDULE_EXACT_ALARM vorhanden sein, damit APIs zum Festlegen exakter Alarme wie setExactAndAllowWhileIdle(int, long, PendingIntent) und setAlarmClock(AlarmClockInfo, PendingIntent) verwendet werden können.

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.

Bei Apps, die auf Android 12 (API‑Level 31) und höher ausgerichtet sind, muss die Berechtigung Manifest.permission.READ_PHONE_STATE vorhanden sein, damit TelephonyCallback.ActiveDataSubscriptionIdListener aufgerufen werden kann.

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.

Bei Apps, die auf Android 12 (API‑Level 31) und höher ausgerichtet sind, muss die Berechtigung Manifest.permission.READ_PHONE_STATE vorhanden sein, damit TelephonyCallback.CellInfoListener aufgerufen werden kann.

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.

Bei Apps, die auf Android 12 (API‑Level 31) und höher ausgerichtet sind, muss die Berechtigung Manifest.permission.READ_PHONE_STATE vorhanden sein, damit TelephonyCallback.DisplayInfoListener aufgerufen werden kann.

RESTRICT_ADB_BACKUP

Änderungs-ID:171032338
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, ist adb backup automatisch für Apps aktiviert, die als debuggable ausgeführt werden (android:debuggable ist auf true festgelegt), und für alle 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-Link-Bestätigungs-API erforderlich. Das bedeutet, dass eine App 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, andere Schemas waren zulässig und wenn autoVerify in einem beliebigen Intent-Filter auf true gesetzt wurde, wurde implizit davon ausgegangen, dass alle Intent-Filter auf autoVerify="true" gesetzt waren.

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

Damit diese Änderung aktiviert wird, muss sie 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, werden die neuesten SELinux-Änderungen aktiviert. Das Deaktivieren dieser Änderung für eine App, die auf Android 12 (API‑Level 31) oder höher ausgerichtet ist, hat keine Auswirkungen. Das gilt auch für Apps, die eine gemeinsame Nutzer-ID verwenden.

SETTINGS_API_V2

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

Die neue API für Nutzereinstellungen zum Bestätigen von Domains, die in Intent-Filtern in AndroidManifest.xml mit autoVerify=true gekennzeichnet sind, ist in der aktuellen Plattform-Vorabversion noch nicht implementiert. Derzeit können Sie sich die Änderungen an den neuen Nutzereinstellungen ansehen, indem Sie diese ChangeId aktivieren und die Befehle 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.

Für Apps, die für Android 12 (API-Level 31) und höher bestimmt sind, wird festgelegt, ob ein kürzeres Zeitlimit verwendet werden soll, bevor das Standby-Bucket auf ACTIVE hochgestuft wird, wenn Apps einen Dienst im Vordergrund starten.