Verhaltensänderungen: alle Apps

Die Android 11-Plattform umfasst Verhaltensänderungen, die sich auf Ihre App auswirken können. Die folgenden Verhaltensänderungen gelten für alle Apps, die unter Android 11 ausgeführt werden, unabhängig von targetSdkVersion. Sie sollten Ihre App testen und sie gegebenenfalls so anpassen, dass sie diese Funktionen unterstützt.

Lesen Sie sich auch die Liste der Verhaltensänderungen durch, die sich nur auf Apps auswirken, die auf Android 11 ausgerichtet sind.

Datenschutz

In Android 11 werden Änderungen und Einschränkungen eingeführt, um den Datenschutz für Nutzer zu verbessern. Dazu gehören:

  • Einmalige Berechtigungen:Nutzer können Apps vorübergehend Zugriff auf die Berechtigungen für Standort, Mikrofon und Kamera gewähren.
  • Sichtbarkeit des Berechtigungsdialogfelds:Wiederholte Ablehnungen einer Berechtigung bedeuten „Nicht mehr fragen“.
  • Audits für den Datenzugriff:Sie erhalten Informationen dazu, wo Ihre App auf personenbezogene Daten zugreift, sowohl im Code Ihrer App als auch im Code abhängiger Bibliotheken.
  • Berechtigungen für das Fenster für Systemwarnungen:Bestimmten App-Klassen wird die Berechtigung SYSTEM_ALERT_WINDOW auf Anfrage automatisch gewährt. Außerdem werden Nutzer mit Intents, die die Intent-Aktion ACTION_MANAGE_OVERLAY_PERMISSION enthalten, immer zu einem Bildschirm in den Systemeinstellungen weitergeleitet.
  • Permanente SIM-IDs:Unter Android 11 und höher ist der Zugriff auf die nicht zurücksetzbaren ICCIDs über die Methode getIccId() eingeschränkt. Die Methode gibt einen nicht nullwertigen, leeren String zurück. Wenn Sie eine installierte SIM-Karte auf dem Gerät eindeutig identifizieren möchten, verwenden Sie stattdessen die Methode getSubscriptionId(). Die Abo-ID ist ein Indexwert (beginnend mit 1), mit dem installierte SIM-Karten eindeutig identifiziert werden können, einschließlich physischer und elektronischer SIM-Karten. Der Wert dieser Kennung bleibt für eine bestimmte SIM-Karte unverändert, es sei denn, das Gerät wird auf die Werkseinstellungen zurückgesetzt.

Weitere Informationen finden Sie auf der Seite Datenschutz.

COVID-19-Benachrichtigungen

Mit Android 11 wird die Plattform im Hinblick auf das COVID-19-Benachrichtigungssystem aktualisiert. Nutzer können jetzt Apps für COVID-19-Benachrichtigungen unter Android 11 verwenden, ohne die Einstellung für die Gerätestandortermittlung aktivieren zu müssen. Diese Ausnahme gilt nur für das COVID-19-Benachrichtigungssystem, da es so konzipiert ist, dass Apps, die es verwenden, den Gerätestandort nicht über die Bluetooth-Suche ermitteln können.

Aus Datenschutzgründen dürfen alle anderen Apps weiterhin keine Bluetooth-Suche durchführen, es sei denn, die Einstellung für den Gerätestandort ist aktiviert und der Nutzer hat ihnen die Berechtigung zur Standortermittlung erteilt. Weitere Informationen finden Sie in unserem Update zu COVID-19-Benachrichtigungen.

Sicherheit

SSL-Sockets verwenden standardmäßig die Conscrypt-SSL-Engine

Die Standard-SSLSocket-Implementierung von Android basiert auf Conscrypt. Seit Android 11 basiert diese Implementierung intern auf der SSLEngine von Conscrypt.

Scudo Hardened Allocator

In Android 11 wird der Scudo Hardened Allocator intern für die Verwaltung von Heap-Zuweisungen verwendet. Scudo kann einige Arten von Verstößen gegen die Speichersicherheit erkennen und beheben. Wenn in nativen Absturzberichten Scudo-bezogene Abstürze (z. B. Scudo ERROR:) angezeigt werden, lesen Sie die Dokumentation zur Fehlerbehebung für Scudo.

Statistiken zur App-Nutzung

Zum besseren Schutz der Nutzer speichert Android 11 die App-Nutzungsstatistiken der einzelnen Nutzer im mit Anmeldedaten verschlüsselten Speicher. Daher können weder das System noch Apps auf diese Daten zugreifen, es sei denn, isUserUnlocked() gibt true zurück. Das ist der Fall, wenn eines der folgenden Ereignisse eintritt:

  • Der Nutzer entsperrt sein Gerät zum ersten Mal nach einem Systemstart.
  • Der Nutzer wechselt auf dem Gerät zu seinem Konto.

Wenn Ihre App bereits an eine Instanz von UsageStatsManager gebunden ist, prüfen Sie, ob Sie Methoden auf diesem Objekt aufrufen, nachdem der Nutzer sein Gerät entsperrt hat. Andernfalls gibt die API jetzt null oder leere Werte zurück.

Emulatorunterstützung für 5G

Android 11 bietet 5G APIs, mit denen Sie Ihren Apps innovative Funktionen hinzufügen können. Um die Funktionen beim Hinzufügen zu testen, können Sie die neuen Funktionen des Android SDK-Emulators verwenden. Die neue Funktion wurde in der Emulator-Version 30.0.22 hinzugefügt. Wenn Sie die 5G-Netzwerkeinstellung auswählen, wird für TelephonyDisplayInfo der Wert OVERRIDE_NETWORK_TYPE_NR_NSA festgelegt. Außerdem wird die geschätzte Bandbreite geändert und Sie können den Messmodus festlegen, um zu prüfen, ob Ihre Anwendung angemessen auf Änderungen des NET_CAPABILITY_TEMPORARILY_NOT_METERED-Status reagiert.

Leistung und Fehlerbehebung

Begrenzungen für JobScheduler API-Aufrufe debuggen

Android 11 bietet eine Debug-Unterstützung für Apps, mit der potenzielle JobScheduler API-Aufrufe identifiziert werden können, die bestimmte Ratenlimits überschritten haben. Entwickler können diese Funktion nutzen, um potenzielle Leistungsprobleme zu erkennen. Bei Apps, für die das Manifestattribut debuggable auf „wahr“ gesetzt ist, wird bei JobScheduler API-Aufrufen, die die Ratenlimits überschreiten, RESULT_FAILURE zurückgegeben. Limits sind so festgelegt, dass legitime Anwendungsfälle davon nicht betroffen sein sollten.

Dateideskriptor-Sanitizer (fdsan)

Mit Android 10 wurde fdsan (Dateideskriptor-Sanitizer) eingeführt. fdsan erkennt einen Missbrauch der Eigentümerschaft von Dateideskriptoren, z. B. die Verwendung nach dem Schließen und das doppelte Schließen. Der Standardmodus für fdsan ändert sich in Android 11. fdsan wird jetzt beim Erkennen eines Fehlers abgebrochen. Bisher wurde eine Warnung protokolliert und fortgefahren. Wenn in Ihrer Anwendung aufgrund von fdsan Abstürze auftreten, lesen Sie den Hilfeartikel fdsan documentation.

Einschränkungen für Nicht-SDK-Schnittstellen

Android 11 enthält aktualisierte Listen eingeschränkter nicht SDK-basierter Schnittstellen, die auf der Zusammenarbeit mit Android-Entwicklern und den neuesten internen Tests basieren. Wir sorgen nach Möglichkeit dafür, dass öffentliche Alternativen verfügbar sind, bevor wir Nicht-SDK-Schnittstellen einschränken.

Wenn Ihre App nicht auf Android 11 ausgerichtet ist, wirken sich einige dieser Änderungen möglicherweise nicht sofort auf Sie aus. Derzeit können Sie einige Nicht-SDK-Schnittstellen verwenden (je nach Ziel-API-Level Ihrer App). Die Verwendung von Nicht-SDK-Methoden oder ‑Feldern birgt jedoch immer ein hohes Risiko, dass Ihre App nicht mehr funktioniert.

Wenn Sie nicht sicher sind, ob Ihre App Nicht-SDK-Schnittstellen verwendet, können Sie Ihre App testen, um das herauszufinden. Wenn Ihre App Nicht-SDK-Schnittstellen verwendet, sollten Sie mit der Planung einer Migration zu SDK-Alternativen beginnen. Uns ist jedoch bewusst, dass es für einige Apps gültige Anwendungsfälle für die Verwendung von Nicht-SDK-Schnittstellen gibt. Wenn Sie für ein Feature in Ihrer App keine Alternative zur Verwendung einer Nicht-SDK-Schnittstelle finden, sollten Sie eine neue öffentliche API anfordern.

Weitere Informationen zu den Änderungen in diesem Android-Release finden Sie unter Updates für Nicht-SDK-Schnittstelleneinschränkungen in Android 11. Weitere Informationen zu Nicht-SDK-Schnittstellen finden Sie unter Einschränkungen für Nicht-SDK-Schnittstellen.

Gemeinsam genutzte Bibliothek aus Maps Version 1 entfernt

Version 1 der geteilten Google Maps-Mediathek wurde in Android 11 vollständig entfernt. Diese Bibliothek wurde bereits eingestellt und funktioniert für Apps unter Android 10 nicht mehr. Für Apps, die bisher auf dieser freigegebenen Bibliothek für Geräte mit Android 9 (API-Level 28) oder niedriger basierten, sollte stattdessen das Maps SDK for Android verwendet werden.

Interaktion mit anderen Apps

Inhalts-URIs teilen

Wenn Ihre App einen Inhalts-URI mit einer anderen App teilt, muss der Intent URI-Zugriffsberechtigungen gewähren, indem mindestens eine der folgenden Intent-Flags festgelegt wird: FLAG_GRANT_READ_URI_PERMISSION und FLAG_GRANT_WRITE_URI_PERMISSION. Wenn die andere App auf Android 11 ausgerichtet ist, kann sie dann weiterhin auf den Inhalts-URI zugreifen. Ihre App muss die Intent-Flags auch dann enthalten, wenn der Inhalts-URI mit einem Contentanbieter verknüpft ist, der nicht zu Ihrer App gehört.

Wenn Ihre App der Inhaber des Inhaltsanbieters ist, der mit dem Inhalts-URI verknüpft ist, prüfen Sie, ob der Inhaltsanbieter nicht exportiert wird. Wir empfehlen diese Sicherheitsbest Practice bereits.

Mediathek wird geladen

ICU-Gängige Bibliothek mit absolutem Pfad laden

Apps, die auf API 28 und niedriger ausgerichtet sind, können dlopen(3) nicht verwenden, um libicuuc mit dem absoluten Pfad „/system/lib/libicuuc.so“ zu laden. Für diese Apps gibt dlopen("/system/lib/libicuuc.so", ...) einen Null-Handle zurück.

Verwenden Sie stattdessen den Bibliotheksnamen als Dateinamen, z. B. dlopen("libicuuc.so", ...).