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

Abbildung 1: Auf dem Bildschirm „Änderungen an der App-Kompatibilität“ in den Entwickleroptionen werden die Änderungen aufgeführt, die du aktivieren oder deaktivieren kannst.

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

Hier sind einige der Möglichkeiten, die Sie mit den Tools des Kompatibilitäts-Frameworks haben:

  • Gezielte Änderungen testen, ohne die targetSdkVersion der App tatsächlich zu ändern Mit den Ein/Aus-Schaltflächen können Sie bestimmte Änderungen am Zielverhalten zwingend aktivieren, um die Auswirkungen auf Ihre vorhandene App zu bewerten.
  • Konzentrieren Sie sich bei Ihren Tests nur auf bestimmte Änderungen. Anstatt alle gezielten Änderungen auf einmal vornehmen zu müssen, können Sie mit den Schaltern alle gezielten Änderungen deaktivieren, mit Ausnahme derjenigen, die Sie testen möchten.
  • Einstellungen über adb verwalten Sie können adb-Befehle verwenden, um die umschaltbaren Änderungen in Ihrer automatisierten Testumgebung zu aktivieren und zu deaktivieren.
  • Schnelleres Debugging mit Standard-Änderungs-IDs: Jede umschaltbare Änderung hat 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 für jeden dieser Anwendungsfälle findest du unter Tools für das Kompatibilitäts-Framework.

Verhaltensänderungen im Kompatibilitäts-Framework

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

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 die Display API-Sandbox unabhängig vom Fenstermodus auf ein Paket angewendet. Die Display APIs stellen immer die App-Grenzen bereit.

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

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 erweiterten Autofill-Frameworks Vorschläge ohne Text (z. B. Bilder) bereitstellen (siehe Autofill-Dienste). 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 zuvor die InputConnection.commitContent(InputContentInfo, int, Bundle) API implementiert haben, reibungsloser verläuft, verwenden wir diese API als Fallback, wenn OnReceiveContentListener noch nicht von der App implementiert wurde. Dieses Fallback ist nur unter Android 12 (API-Level 31) aktiviert. Diese Änderungs-ID deaktiviert das Fallback, sodass Apps, die auf Android 12 (API-Level 32) und höher ausgerichtet sind, die OnReceiveContentListener API implementieren müssen, um Vorschläge zu akzeptieren, die keinen Text enthalten.

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 es 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, generieren unveränderliche PendingIntent-Objekte, die an Standort-APIs übergeben werden, eine IllegalArgumentException..

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 die 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-Events nutzen, 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 unmittelbar 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 Mikrofonanzeigen unterstützt. Ist false, falls vorhanden, da die Methode CompatChanges#isChangeEnabled den Wert 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 gemeinsam nutzen. Wenn eine Berechtigung zu einer Gruppe gehört, muss diese Gruppe ebenfalls 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 Status „Autorisierung 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 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, erhalten Standortclients unter Umständen frühere 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.

Bietet für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, 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 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-Framerate zurück, wenn sie für eine frühere Version kompiliert wurde. Ab Android 12 (API-Level 31) wird die Aktualisierungsrate des physischen Displays zurückgegeben.

DOWNSCALED

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

Diese Änderung ist der Gatekeeper für alle Änderungen an der Herunterskalierung des Puffers 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 zwangsweise auf den höchsten aktivierten Skalierungsfaktor angepasst. Wenn beispielsweise 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 DOWNSCALED ebenfalls aktiviert ist, wird die App durch Aktivieren 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 Aktivieren dieser Änderung für ein Paket gezwungen, davon auszugehen, dass sie auf einem Display mit 35% der vertikalen und horizontalen Auflösung des echten Displays ausgeführt wird.

DOWNSCALE_40

Änderungs-ID: 189970038
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 40% der vertikalen und horizontalen Auflösung des echten 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 echten Displays ausgeführt wird.

DOWNSCALE_50

Änderungs-ID: 176926741
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 50% der vertikalen und horizontalen Auflösung des echten Displays ausgeführt wird.

DOWNSCALE_55

Änderungs-ID: 189970036
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 55% der vertikalen und horizontalen Auflösung des echten Displays ausgeführt wird.

DOWNSCALE_60

Änderungs-ID: 176926771
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 60% der vertikalen und horizontalen Auflösung des echten Displays ausgeführt wird.

DOWNSCALE_65

Änderungs-ID:189969744
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 65% der vertikalen und horizontalen Auflösung des echten Displays ausgeführt wird.

DOWNSCALE_70

Änderungs-ID: 176926829
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 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 Aktivieren dieser Änderung für ein Paket gezwungen, davon auszugehen, dass sie auf einem Display mit 75% der vertikalen und horizontalen Auflösung des echten Displays ausgeführt wird.

DOWNSCALE_80

Änderungs-ID:176926753
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 80% der vertikalen und horizontalen Auflösung des echten Displays ausgeführt wird.

DOWNSCALE_85

Änderungs-ID: 189969734
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 85% der vertikalen und horizontalen Auflösung des echten Displays ausgeführt wird.

DOWNSCALE_90

Änderungs-ID: 182811243
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 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, die größer als 1080p sind. 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, wird die Intent-Aktion ACTION_CLOSE_SYSTEM_DIALOGS ab Android 12 eingestellt.

Weitere Informationen zu dieser Änderung finden Sie unter Apps können keine Systemdialogfelder 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.

Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, können keine privaten Dateien über den Medienanbieter 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.

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

Aktiviert für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, den Schutz READ_PHONE_NUMBERS oder READ_PRIVILEGED_PHONE_STATE 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 aufgehobenen Volume in MediaProvider#query einzuschließen.

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.

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

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, müssen alle ungenauen Wecker 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 APIs wie setExact(int, long, PendingIntent) verwenden. Bei ungenauen Weckern mit kürzeren Zeitfenstern werden die Zeitfenster 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 zu den öffentlichen nativen gemeinsam genutzten Bibliotheken deklarieren, die vom Gerätehersteller mit dem Tag uses-native-library in der Datei 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 wird.

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

Bei 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 entwickelt wurden, 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, beende die InputConnection, wenn das Gerät non-interactive wird.

Wenn die Richtlinie durch die aktuelle input method aktiviert ist, wird die aktuelle Eingabeverbindung finished, wenn die Geräte nicht mehr interaktiv sind.

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

FORCE_DISABLE_HEVC_SUPPORT

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

Erzwingen, dass eine App die HEVC-Medienfunktion nicht unterstützt. Apps sollten ihre unterstützten Medienfunktionen in ihrem Manifest deklarieren. Mit diesem Flag kann jedoch erzwungen werden, 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 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 ihre unterstützten Medienfunktionen in ihrem Manifest deklarieren. Mit diesem Flag kann jedoch erzwungen werden, dass eine App HEVC unterstützt, sodass beim Zugriff auf in HEVC codierte Medien keine Transcodierung erforderlich ist. Wenn Sie dieses Flag festlegen, werden alle Standardeinstellungen für Apps auf Betriebssystemebene überschrieben. Sie ist standardmäßig deaktiviert. Das 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. Wir erlauben nur die Größenänderung im Vollbildmodus, aber nicht das Erzwingen des Mehrfenstermodus mit anpassbarer Größe.

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 das Attribut 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 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 wurden, bei der Übertragung von Gerät zu Gerät 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 von Sprachen zurück, wenn sie nicht festgelegt ist, anstatt 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.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird die für isBackupServiceActive() erforderliche Berechtigung BACKUP auf der Dienstseite und nicht auf der Clientseite 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 Schlüsselspeichervorgä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 Vorgangsslots.

Um den Eindruck von „unendlich“ vielen Vorgangsslots aufrechtzuerhalten, würde der Keystore-Daemon die am längsten nicht verwendeten Vorgänge entfernen, wenn kein Vorgangsslot verfügbar ist. Dies kann dazu führen, dass fehlerfreie Vorgänge vorzeitig beendet werden. Dadurch war AndroidKeystore anfällig für Denial-of-Service-Angriffe (DoS) und unbeabsichtigte Livelocks. Wenn beispielsweise mehrere Apps aufgrund von Optimierungen der Energieverwaltung gleichzeitig aktiviert werden und versuchen, kryptografische Vorgänge auszuführen, beenden sie die Vorgänge der jeweils anderen Apps, 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 kurzzeitig 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 Verschlüsselung des Dateisystems, die sogar diese Vorgänge entfernen können. Diese Fälle sind jedoch extrem selten. Als Nebeneffekt dieses neuen Bereinigungsvorgangs kann die Erstellung 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 der Kehrwert der Bereinigungsleistung (Aufrufer) oder des Bereinigungswiderstands (vorhandener Vorgang). Damit der Aufrufer einen Vorgang entfernen 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 verfügbaren 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 Chiffre- und Signaturobjekten immer erfolgreich ist. Es kann jedoch länger dauern, bis ein Vorgang ausgeführt wird. Alle Android-Versionen profitieren von einer faireren Planung der Vorgangszeitfenster 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 die 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 Intent.ACTION_CLOSE_SYSTEM_DIALOGS nicht mehr senden soll, 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 erforderlich, um die Statusleistenbereiche aus Sicherheitsgründen zu minimieren. Dies wurde von Malware ausgenutzt, um zu verhindern, dass Nutzer auf wichtige Benachrichtigungen zugreifen können.

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 als „low power“ (niedriger Energieverbrauch) gekennzeichneten LocationRequest-Objekte Ausnahmen aus, wenn der Aufrufer nicht die Berechtigung LOCATION_HARDWARE hat, anstatt den Teil der Anfrage mit niedrigem Energieverbrauch stillschweigend 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.

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

Weitere Informationen zu dieser Änderung finden Sie unter Sicherer 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.

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 finden Sie unter Tagged Pointers.

NATIVE_HEAP_ZERO_INIT

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

Automatische Nullinitialisierung von nativen Heap-Arbeitsspeicherzuweisungen aktivieren.

NATIVE_MEMTAG_ASYNC

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

Asynchrone (ASYNC) Memory Tagging-Prüfung in diesem Prozess aktivieren. 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) 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. 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 Sandboxing der Display API auf eine Letterbox- oder SCM-Aktivität angewendet wird. Die Display APIs stellen weiterhin DisplayArea-Grenzen bereit.

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

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, spezifischere Stornierungsgrü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.

Um die App-Leistung und die Nutzerfreundlichkeit zu verbessern, können Apps, die auf Android 12 ausgerichtet sind, keine Dienste oder Übertragungsempfänger als Benachrichtigungs-Trampoline 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 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, können die folgenden Mindestseitenverhältnisse angewendet werden:

Wenn diese Änderung für ein App-Paket aktiviert ist, wird das im App-Manifest angegebene minimale Seitenverhältnis durch das größte aktivierte Seitenverhältnis überschrieben, es sei denn, der Wert im App-Manifest 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, wird durch die Aktivierung dieser Änderung für ein Paket das minimale Seitenverhältnis der Aktivität auf einen großen Wert festgelegt, wie durch OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE definiert.

OVERRIDE_MIN_ASPECT_RATIO_MEDIUM

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

Wenn OVERRIDE_MIN_ASPECT_RATIO ebenfalls aktiviert ist, wird durch die Aktivierung dieser Änderung für ein Paket das minimale Seitenverhältnis der Aktivität auf einen mittleren Wert festgelegt, 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.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, musst du die Veränderlichkeit jedes PendingIntent-Objekts angeben, das deine App erstellt. Diese zusätzliche Anforderung verbessert die Sicherheit Ihrer App.

Weitere Informationen zu dieser Änderung finden Sie unter Pending 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 für die DevicePolicyManager-Instanz 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 ein- oder ausgeschaltet werden. Sie wird nur vom Kompatibilitäts-Framework protokolliert.

Aktiviert die Ratenbegrenzung für die Anzahl der Toast.show()-Aufrufe, um zu verhindern, dass der Nutzer in kurzer Zeit mit zu vielen Toasts überfordert wird. Wenn versucht wird, mehr Toasts als in einem bestimmten Zeitraum zulässig anzuzeigen, 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.

Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, benötigen die Berechtigung Manifest.permission.SCHEDULE_EXACT_ALARM, um APIs zum Festlegen exakter Alarme wie setExactAndAllowWhileIdle(int, long, PendingIntent) und setAlarmClock(AlarmClockInfo, PendingIntent) zu verwenden.

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

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

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

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird adb backup automatisch für Apps aktiviert, die als debugfähig ausgeführt werden (android:debuggable auf true gesetzt), und ist 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 Links Verification API erforderlich. Diese Anforderung 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 nicht erforderlich, andere Schemas waren zulässig und wenn autoVerify in einem 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.

Bei 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 wirksam 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. Es 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 für Nutzereinstellungen zur Bestätigung von Domains, die in AndroidManifest.xml-Intent-Filtern mit autoVerify=true gekennzeichnet sind, ist in der aktuellen Plattformvorschau noch nicht implementiert. Derzeit ist es möglich, die neuen Änderungen an den Nutzereinstellungen als Vorabversion anzusehen, indem Sie diese ChangeId aktivieren und den Befehl 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.

Bei Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird hiermit festgelegt, ob ein kürzeres Zeitlimit verwendet werden soll, bevor der Standby-Bucket auf ACTIVE erhöht wird, wenn Apps einen Dienst im Vordergrund starten.