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

Abbildung 1: Auf dem Bildschirm mit den Änderungen der App-Kompatibilität in den Entwickleroptionen werden die Änderungen angezeigt, die du aktivieren bzw. deaktivieren kannst.

Auf dieser Seite wird jede Verhaltensänderung beschrieben, die Teil des Kompatibilitäts-Frameworks in Android 12 (API-Ebene 31) ist. 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äts-Frameworks können Sie beispielsweise Folgendes tun:

  • Testen Sie gezielte Änderungen, ohne die targetSdkVersion der App tatsächlich zu ändern. Mithilfe der Ein-/Aus-Schaltflächen können Sie die Aktivierung bestimmter Änderungen des zielgerichteten Verhaltens erzwingen, um die Auswirkungen auf Ihre vorhandene App zu bewerten.
  • Konzentrieren Sie sich bei Ihren Tests nur auf bestimmte Änderungen. Mit den Ein-/Aus-Schaltflächen müssen Sie nicht alle gewünschten Änderungen gleichzeitig vornehmen, sondern alle zielgerichteten Änderungen mit Ausnahme der Änderungen deaktivieren, die Sie testen möchten.
  • Ein-/Aus-Schaltflächen über ADB verwalten: Mit ADB-Befehlen können Sie die ein-/ausschaltbaren Änderungen in Ihrer automatisierten Testumgebung aktivieren und deaktivieren.
  • Schnellere Fehlerbehebung mit Standardänderungs-IDs: Die ein-/ausschaltbaren Änderungen haben jeweils eine eindeutige ID und einen eindeutigen Namen, mit dem Sie schnell Fehler in der Ursache in der Logausgabe beheben können.

Ausführliche Informationen zur Verwendung der Tools für jeden dieser Anwendungsfälle finden Sie unter Kompatibilitäts-Framework-Tools.

Verhaltensänderungen im Kompatibilitäts-Framework

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

Sie können die Liste der Änderungen nach dem 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 die Display API-Sandboxing unabhängig vom Windowing-Modus auf ein Paket angewendet. Die Display APIs stellen immer die Anwendungsgrenzen bereit.

Weitere Informationen zu dieser Änderung findest du auf der Seite zu Verhaltensänderungen in Android 12 im Abschnitt zu verworfenen 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 können über die Plattform Vorschläge ohne Text (z. B. Bilder) mithilfe des erweiterten Autofill-Frameworks bereitgestellt werden (siehe Autofill-Dienste). Damit eine App diese Vorschläge verarbeiten kann, muss sie normalerweise die OnReceiveContentListener API implementieren.

Um die Einführung dieser API für Apps zu erleichtern, in denen zuvor die InputConnection.commitContent(InputContentInfo, int, Bundle) API implementiert wurde, verwenden wir diese API als Fallback, wenn OnReceiveContentListener noch nicht von der App implementiert wurde. Diese Fallback-Funktion 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 Nicht-Textvorschläge 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 mit Fenstern in der App verwendet wird. Wir gehen davon aus, dass dieses Flag wahrscheinlich nur von den Systemkomponenten verwendet wird, da es ein nicht unterstütztes Feld ist. 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, 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 PendingIntent-Standortanfragen verwendet werden.

BLOCK_UNTRUSTED_TOUCHES

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

Zur Wahrung der Systemsicherheit und für eine gute Nutzerfreundlichkeit hindert Android 12 Apps daran, Touch-Ereignisse zu nutzen, bei denen die App durch ein Overlay auf unsichere Weise blockiert wird.

Weitere Informationen zu dieser Änderung finden Sie im Hilfeartikel Nicht vertrauenswürdige Touch-Ereignisse 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 die Aktivität das Aktivitätsergebnis unmittelbar vor ihrer 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, 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 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.

Für Client-Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird ein SecurityException ausgegeben, 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 ein SecurityException ausgegeben, wenn die App nicht die Berechtigung HIGH_SAMPLING_RATE_SENSORS hat, im Debug-Modus ausgeführt wird und Abtastraten unter 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 Standortclients unter bestimmten Umständen frühere Standorte (aus der Zeit vor dem aktuellen Datum) 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.

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 reduzieren, wenn dies bevorzugter ist (z. B. wenn die App Surface.setFrameRate(float, int) aufgerufen hat). Bei Apps treten Choreographer.postFrameCallback(Choreographer.FrameCallback)-Callbacks und ein Gegendruck mit der gedrosselten Framerate auf. 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 Apps die Frame-Taktung korrekt durchführen können. Display.Mode.getRefreshRate() gibt die Framerate der App zurück, wenn sie zu einem früheren Release 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 dient als Gatekeeper für alle Änderungen des Zwischenspeichers nach App. 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 auf den höchsten, aktivierten Skalierungsfaktor gesetzt. Beispiel: 80% wird 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 auch DOWNSCALED aktiviert ist, wird durch das Aktivieren dieser Änderung für ein Paket davon ausgegangen, dass die App auf einem Bildschirm mit 30% der vertikalen und horizontalen Auflösung der tatsächlichen Anzeige ausgeführt wird.

DOWNSCALE_35

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

Wenn auch DOWNSCALED aktiviert ist, wird durch das Aktivieren dieser Änderung für ein Paket davon ausgegangen, dass die App auf einem Bildschirm mit 35% der vertikalen und horizontalen Auflösung der tatsächlichen Anzeige ausgeführt wird.

DOWNSCALE_40

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

Wenn auch DOWNSCALED aktiviert ist, wird durch das Aktivieren dieser Änderung für ein Paket davon ausgegangen, dass die App auf einem Bildschirm mit 40% der vertikalen und horizontalen Auflösung der tatsächlichen Anzeige ausgeführt wird.

DOWNSCALE_45

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

Wenn auch DOWNSCALED aktiviert ist, wird durch das Aktivieren dieser Änderung für ein Paket davon ausgegangen, dass die App auf einem Bildschirm mit 45% der vertikalen und horizontalen Auflösung der tatsächlichen Anzeige ausgeführt wird.

DOWNSCALE_50

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

Wenn auch DOWNSCALED aktiviert ist, wird durch das Aktivieren dieser Änderung für ein Paket davon ausgegangen, dass die App auf einem Bildschirm mit 50% der vertikalen und horizontalen Auflösung der tatsächlichen Anzeige ausgeführt wird.

DOWNSCALE_55

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

Wenn auch DOWNSCALED aktiviert ist, wird durch das Aktivieren dieser Änderung für ein Paket davon ausgegangen, dass die App auf einem Bildschirm mit 55% der vertikalen und horizontalen Auflösung der tatsächlichen Anzeige ausgeführt wird.

DOWNSCALE_60

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

Wenn auch DOWNSCALED aktiviert ist, wird durch das Aktivieren dieser Änderung für ein Paket davon ausgegangen, dass die App auf einem Bildschirm mit 60% der vertikalen und horizontalen Auflösung der tatsächlichen Anzeige ausgeführt wird.

DOWNSCALE_65

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

Wenn auch DOWNSCALED aktiviert ist, wird durch das Aktivieren dieser Änderung für ein Paket davon ausgegangen, dass die App auf einem Bildschirm mit 65% der vertikalen und horizontalen Auflösung der tatsächlichen Anzeige ausgeführt wird.

DOWNSCALE_70

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

Wenn auch DOWNSCALED aktiviert ist, wird durch das Aktivieren dieser Änderung für ein Paket davon ausgegangen, dass die App auf einem Bildschirm mit 70% der vertikalen und horizontalen Auflösung der tatsächlichen Anzeige ausgeführt wird.

DOWNSCALE_75

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

Wenn auch DOWNSCALED aktiviert ist, wird durch das Aktivieren dieser Änderung für ein Paket davon ausgegangen, dass die App auf einem Bildschirm mit 75% der vertikalen und horizontalen Auflösung der tatsächlichen Anzeige ausgeführt wird.

DOWNSCALE_80

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

Wenn auch DOWNSCALED aktiviert ist, wird durch das Aktivieren dieser Änderung für ein Paket davon ausgegangen, dass die App auf einem Bildschirm mit 80% der vertikalen und horizontalen Auflösung der tatsächlichen Anzeige ausgeführt wird.

DOWNSCALE_85

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

Wenn auch DOWNSCALED aktiviert ist, wird durch das Aktivieren dieser Änderung für ein Paket davon ausgegangen, dass die App auf einem Bildschirm mit 85% der vertikalen und horizontalen Auflösung der tatsächlichen Anzeige ausgeführt wird.

DOWNSCALE_90

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

Wenn auch DOWNSCALED aktiviert ist, wird durch das Aktivieren dieser Änderung für ein Paket davon ausgegangen, dass die App auf einem Bildschirm mit 90% der vertikalen und horizontalen Auflösung der tatsächlichen Anzeige 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, können jede Fenstergröße verarbeiten, auch für Fenstergrößen von über 1080p. Bei Apps, die auf ältere Android-Versionen ausgerichtet sind, wird nicht erwartet, dass sie Windows mit einer höheren Auflösung als 1080p empfangen. Daher werden sie bei Bedarf auf 1080p herunterskaliert.

DROP_CLOSE_SYSTEM_DIALOGS

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

Um die Nutzersteuerung bei der Interaktion mit Apps und dem System zu verbessern, wird die Intent-Aktion ACTION_CLOSE_SYSTEM_DIALOGS 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.

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 aufzuschieben, 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 Aufrufstatus abfragen und informieren, 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 von einem kürzlich in MediaProvider#query getrennten Volume zu berücksichtigen.

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 Rohzugriff auf 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 von nur wenigen Minuten haben. In der Praxis sind alle Alarme, die kleinere Fenster erfordern, die gleichen wie exakte Alarme und sollten die entsprechenden bereitgestellten APIs verwenden, z. B. setExact(int, long, PendingIntent). Bei nicht exakten Alarmen 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.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, müssen Abhängigkeiten von den öffentlichen nativen gemeinsam genutzten Bibliotheken deklariert werden. Diese werden vom Gerätehersteller mithilfe des uses-native-library-Tags in der AndroidManifest.xml definiert. Wenn eine der Abhängigkeiten nicht erfüllt ist, z. B. wenn eine der Abhängigkeiten nicht vorhanden ist, installiert der Paketmanager die Anwendung nicht. Die Abhängigkeit kann mithilfe des Attributs android:required im Tag als 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. Der Aufruf von dlopen für eine native freigegebene Bibliothek, die nicht im App-Manifest angezeigt wird, 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, prüft SQLiteQueryBuilder die gesamte CalendarProvider2-Abfrageauswahl anhand schädlicher Argumente.

FGS_BG_START_RESTRICTION_CHANGE_ID

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

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 auf Android 12 (API-Level 31) und höher ausgerichtet sind, kann das System ein 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, stelle InputConnection fertig, wenn auf dem Gerät der Status non-interactive wird.

Wenn die aktuelle Eingabeverbindung über den aktuellen input method aktiviert wurde, ist die aktuelle Eingabeverbindung immer finished, wenn die Geräte nicht interaktiv werden.

Ist diese Option nicht aktiviert, wird die aktuelle Eingabeverbindung stattdessen im Hintergrund deaktiviert, wenn die Geräte nicht interaktiv werden. Außerdem wird ein onFinishInput()- und ein onStartInput()-Paar gesendet, wenn das Gerät wieder interaktiv wird.

FORCE_DISABLE_HEVC_SUPPORT

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

Erzwingen, dass eine App die HEVC-Medienfunktion nicht unterstützt. Anwendungen sollten ihre unterstützten Medienfunktionen in ihrem Manifest deklarieren. Mit diesem Flag kann jedoch erzwungen werden, dass eine Anwendung HEVC nicht unterstützt. Dadurch wird die Transcodierung beim Zugriff auf in HEVC codierte Medien erzwungen. Durch das Festlegen dieses Flags werden alle Standardeinstellungen auf Betriebssystemebene für Anwendungen überschrieben. Es ist standardmäßig deaktiviert. Dies bedeutet, dass 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-Medienfunktion unterstützt. Apps sollten ihre unterstützten Medienfunktionen in ihrem Manifest deklarieren. Mit diesem Flag kann jedoch die Unterstützung von HEVC für eine App erzwungen werden, sodass beim Zugriff auf in HEVC codierte Medien eine Transcodierung vermieden wird. Durch das Festlegen dieses Flags werden alle Standardwerte auf Betriebssystemebene für Anwendungen überschrieben. Es ist standardmäßig deaktiviert. Dies 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 angewendeten Pakete nicht geändert werden kann.

FORCE_RESIZE_APP

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

Erzwingt, dass die Größe der angewendeten Pakete geändert werden kann. Die Größenänderung ist nur im Vollbild-Windowing-Modus zulässig, aber nicht in einem 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.

Für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, wird der Zugriff auf die android.icu.impl.ICUBinary.dataPath-Property 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 Geräte-zu-Gerät-Migrationen (D2D) für Apps 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 festgelegt wurden, bei Übertragungen 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 anstelle der Standardsprache des Systems eine leere Sprachenliste zurück, wenn sie nicht festgelegt ist.

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 dienstseitig 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. Ein Schlüsselspeicher wurde früher unter der Annahme, dass die Erstellung kryptografischer Vorgänge immer erfolgreich ist. Das KeyMint-Back-End hat jedoch nur eine begrenzte Anzahl von Vorgangsslots.

Um das Aussehen „unendlicher“ Vorgangsslots aufrechtzuerhalten, bereinigt der Schlüsselspeicher-Daemon am wenigsten kürzlich verwendete Vorgänge, wenn kein Slot verfügbar ist. In diesem Fall können fehlerfreie Vorgänge vorzeitig beendet werden. Dadurch konnte AndroidKeystore den Denial-of-Service (DoS)-Prozess und die unbeabsichtigte Livelock-Funktion ermöglicht werden. Wenn beispielsweise mehrere Anwendungen aufgrund von Optimierungen der Energieverwaltung gleichzeitig aktiviert wurden und versuchen, Krypto-Vorgänge durchzuführen, beginnen sie, die anderen Vorgänge zu beenden, ohne Fortschritte zu machen.

Um Livelocks zu vermeiden und DoS-Versuchen abzuhalten, haben wir die Bereinigungsstrategie so geändert, dass Clients bevorzugt werden, die nur wenige Operation-Slots verwenden. Daher enden einzelne Vorgänge, die nicht länger als 5 Sekunden inaktiv sind, fast immer ungehindert durch die Bereinigungsstrategie. Es gibt immer noch einige Vorgänge im Zusammenhang mit der Dateisystemverschlüsselung, die selbst diese Vorgänge bereinigen können, aber diese Fälle sind extrem selten. Als Nebeneffekt dieser neuen Bereinigungsstrategie schlägt die Erstellung jetzt fehl, wenn der Client eine geringere Bereinigungsleistung hat als alle vorhandenen Vorgänge.

Bereinigungsstrategie: Um einen geeigneten Kandidaten zu finden, berechnen wir den Malus für den Aufrufer und jeden vorhandenen Vorgang. Der Malus ist das Gegenteil der Bereinigungsleistung (Aufrufer) bzw. des Beschneidungswiderstands (bestehender Vorgang). Damit der Aufrufer einen Vorgang bereinigen kann, muss er einen Vorgang mit einem Malus finden, der höher als der eigene ist. Weitere Informationen zur Bereinigungsstrategie finden Sie 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, sieht die Initialisierung von Chiffre und Signaturobjekten immer als erfolgreich aus. Allerdings kann es länger dauern, bis ein Vorgang ausgeführt wird. Alle Android-Versionen profitieren von einer faireren Zeitplanung für Vorgangsslots und einer besseren Chance, einen Vorgang erfolgreich abzuschließen.

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 dann gesendet werden, wenn die App auch die Berechtigung android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS hat. Beachte, dass dies die restriktivere Version von #DROP_CLOSE_SYSTEM_DIALOGS ist, bei der davon ausgegangen wird, dass die App nicht mehr den Intent Intent.ACTION_CLOSE_SYSTEM_DIALOGS sendet, sobald die App 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 Steuerfelder der Statusleiste zu minimieren. Es wurde von Malware ausgenutzt, um dem Nutzer den Zugriff auf wichtige Benachrichtigungen zu verwehren.

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, wenn der Aufrufer nicht über die Berechtigung LOCATION_HARDWARE verfügt, anstatt den energiesparenden Teil der Anfrage ohne Meldung 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.

Bei Apps, die auf Android 12 (API-Level 32) und höher ausgerichtet sind, verwenden native Heap-Zuweisungen im AppZygote-Prozess und dessen untergeordnete Elemente im wichtigsten Byte ein Tag ungleich null.

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

NATIVE_HEAP_ZERO_INIT

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

Aktiviert die automatische Nullinitialisierung von nativen Heap-Speicherzuweisungen.

NATIVE_MEMTAG_ASYNC

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

Aktivieren Sie in diesem Prozess die asynchrone (ASYNC)-Speicher-Tag-Prüfung. Dieses Flag 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 (SYNC) Speicher-Tag-Prüfung 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 des Android 12-Verhaltens 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, spezifischere 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 der Nutzerfreundlichkeit dürfen Apps, die auf Android 12 ausgerichtet sind, keine Dienste oder Sendeempfänger als Benachrichtigungs-Trampoline verwenden.

Weitere Informationen zu dieser Änderung finden Sie unter Benachrichtigungs-Trampoline können nicht von Diensten oder Rundfunkempfängern 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 dient als Torwächter für 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 wird, wird das im Manifest der App angegebene minimale Seitenverhältnis auf das höchste aktivierte Seitenverhältnis überschrieben, es sei denn, der Wert des Manifests der App ist höher.

OVERRIDE_MIN_ASPECT_RATIO_LARGE

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

Wenn auch OVERRIDE_MIN_ASPECT_RATIO aktiviert ist, wird durch Aktivieren dieser Änderung für ein Paket das minimale Seitenverhältnis der Aktivität auf einen hohen Wert festgelegt, wie in OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE definiert.

OVERRIDE_MIN_ASPECT_RATIO_MEDIUM

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

Wenn auch OVERRIDE_MIN_ASPECT_RATIO aktiviert ist und diese Änderung für ein Paket aktiviert wird, wird für das minimale Seitenverhältnis der Aktivität ein mittlerer Wert festgelegt, wie in 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 verbessert 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.

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 auf der 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 aktiviert werden. Sie wird nur vom Kompatibilitäts-Framework protokolliert.

Dadurch wird die Ratenbegrenzung für die Anzahl von Toast.show()-Aufrufen aktiviert, damit der Nutzer nicht mit zu vielen Toasts innerhalb eines begrenzten Zeitraums überlastet wird. Jeder Versuch, innerhalb eines bestimmten Zeitraums mehr Toast anzuzeigen, als zulässig, führt dazu, dass der Toast verworfen wird.

REQUIRE_EXACT_ALARM_PERMISSION

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

Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, müssen die Berechtigung Manifest.permission.SCHEDULE_EXACT_ALARM haben, damit APIs wie setExactAndAllowWhileIdle(int, long, PendingIntent) und setAlarmClock(AlarmClockInfo, PendingIntent) verwendet werden können, um exakte Alarme einzustellen.

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.

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

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

Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, müssen 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 debug-fähig ausgeführt werden (android:debuggable ist auf true gesetzt) und ist für andere 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 API zur Verifizierung von App-Links erforderlich. Diese Anforderung bedeutet, dass eine Anwendung Domains innerhalb eines Intent-Filters 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, keine anderen Schemas

In früheren Android-Versionen war Intent.CATEGORY_BROWSABLE keine Voraussetzung, andere Schemas waren zulässig und wenn autoVerify in einem Intent-Filter auf true gesetzt wurde, würde so vorgetäuscht werden, dass alle Intent-Filter auf autoVerify="true" gesetzt wären.

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 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 als Parameter der Methode angegebene Paket 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.

Stimmen Sie für Apps, die auf Android 12 (API-Level 31) und höher ausgerichtet sind, den neuesten SELinux-Änderungen zu. Das Deaktivieren dieser Änderung für eine App, die auf Android 12 (API-Level 31) oder höher ausgerichtet ist, ist unwirksam und 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 Überprüfung von Domains, die in den Intent-Filtern von AndroidManifest.xml als autoVerify=true gekennzeichnet sind, ist in der aktuellen Plattformvorschau noch nicht implementiert. Derzeit ist es möglich, eine Vorschau der neuen Änderungen der Nutzereinstellungen anzuzeigen. Aktivieren Sie dazu diese ChangeId und verwenden Sie adb shell pm set-app-links-user-selection und ähnliche Befehle.

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 festgelegt, ob ein kürzeres Zeitlimit verwendet werden soll, bevor der Stand-by-Bucket auf ACTIVE erhöht wird, wenn Apps einen Dienst im Vordergrund starten.