Verhaltensänderungen: alle Apps

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

Sehen Sie sich auch die Liste der Verhaltensänderungen an, die nur Apps betreffen, 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 Berechtigungen für den Zugriff auf Standort, Mikrofon und Kamera nur für eine einmalige Verwendung erteilen.
  • Sichtbarkeit des Berechtigungsdialogfelds: Wiederholte Ablehnungen einer Berechtigung bedeuten „Nicht mehr fragen“.
  • Prüfung von Datenzugriff: Du erhältst Einblicke, wo deine App auf private Daten zugreift, sowohl im eigenen Code deiner App als auch im Code abhängiger Bibliotheken.
  • Berechtigungen für Systemwarnungsfenster: Bestimmten App-Klassen wird die Berechtigung SYSTEM_ALERT_WINDOW auf Anfrage automatisch gewährt. Außerdem werden Nutzer bei Intents, die die Intent-Aktion ACTION_MANAGE_OVERLAY_PERMISSION enthalten, immer zu einem Bildschirm in den Systemeinstellungen weitergeleitet.
  • Permanente SIM-Kennungen: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 leeren String zurück, der nicht null ist. Verwenden Sie stattdessen die Methode getSubscriptionId(), um eine installierte SIM-Karte auf dem Gerät eindeutig zu identifizieren. Die Abo-ID liefert einen Indexwert (beginnend bei 1) zur eindeutigen Identifizierung installierter SIMs, einschließlich physischer und elektronischer SIMs. Der Wert dieser Kennung bleibt für eine bestimmte SIM-Karte gleich, sofern das Gerät nicht auf die Werkseinstellungen zurückgesetzt wird.

Weitere Informationen finden Sie auf der Seite Datenschutz.

COVID-19-Benachrichtigungen

Android 11 aktualisiert die Plattform unter Berücksichtigung des COVID-19-Benachrichtigungssystems. Nutzer können jetzt Apps für COVID-19-Benachrichtigungen unter Android 11 ausführen, ohne die Standorteinstellung des Geräts aktivieren zu müssen. Dies ist eine Ausnahme, die nur für das COVID-19-Benachrichtigungssystem gilt, da es so konzipiert ist, dass Apps, die es verwenden, den Gerätestandort nicht durch Bluetooth-Scans ableiten können.

Zum Schutz der Privatsphäre der Nutzer ist es allen anderen Apps weiterhin untersagt, Bluetooth-Scans durchzuführen, es sei denn, die Standorteinstellung des Geräts ist aktiviert und der Nutzer hat ihnen die Berechtigung zur Standortermittlung erteilt. Weitere Informationen findest du in unserem Beitrag Update on Exposure Notifications (auf Englisch).

Sicherheit

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

Die standardmäßige SSLSocket-Implementierung von Android basiert auf Conscrypt. Seit Android 11 basiert diese Implementierung intern auf SSLEngine von Conscrypt.

Scudo Hardened Allocator

Android 11 verwendet intern den Scudo Hardened Allocator, um Heap-Zuweisungen zu verarbeiten. Scudo kann einige Arten von Verstößen gegen die Speichersicherheit erkennen und abmildern. Wenn in Berichten zu nativen Abstürzen Scudo-bezogene Abstürze (z. B. Scudo ERROR:) angezeigt werden, lesen Sie die Dokumentation zur Scudo-Fehlerbehebung.

App-Nutzungsstatistiken

Um Nutzer besser zu schützen, werden die App-Nutzungsstatistiken der einzelnen Nutzer unter Android 11 im Anmeldedaten-verschlüsselten Speicher gespeichert. 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 eine der folgenden Bedingungen erfüllt ist:

  • Der Nutzer entsperrt sein Gerät zum ersten Mal nach dem 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 für dieses 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 du deine Apps um innovative Funktionen erweitern kannst. Wenn Sie die Funktionen beim Hinzufügen testen möchten, können Sie die neuen Funktionen des Android SDK-Emulators verwenden. Die neue Funktion wurde in Emulator-Version 30.0.22 hinzugefügt. Wenn Sie die 5G-Netzwerkeinstellung auswählen, wird TelephonyDisplayInfo auf OVERRIDE_NETWORK_TYPE_NR_NSA gesetzt, die geschätzte Bandbreite wird geändert und Sie können die Abrechnung festlegen, um zu prüfen, ob Ihre App angemessen auf Änderungen des NET_CAPABILITY_TEMPORARILY_NOT_METERED-Status reagiert.

Leistung und Debugging

Debugging von JobScheduler API-Aufruflimits

Android 11 bietet Debugging-Unterstützung für Apps, um potenzielle JobScheduler-API-Aufrufe zu identifizieren, die bestimmte Ratenbegrenzungen überschritten haben. Entwickler können diese Funktion nutzen, um potenzielle Leistungsprobleme zu identifizieren. Bei Apps, bei denen das Manifestattribut debuggable auf „true“ gesetzt ist, geben JobScheduler-API-Aufrufe, die die Ratenbegrenzungen überschreiten, RESULT_FAILURE zurück. Die Limits sind so festgelegt, dass legitime Anwendungsfälle nicht beeinträchtigt werden sollten.

Dateideskriptor-Sanitizer (fdsan)

Mit Android 10 wurde fdsan (File Descriptor Sanitizer) eingeführt. fdsan erkennt die fehlerhafte Handhabung 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 abgebrochen, wenn ein Fehler erkannt wird. Bisher wurde eine Warnung protokolliert und der Vorgang fortgesetzt. Wenn in Ihrer Anwendung Abstürze aufgrund von fdsan auftreten, lesen Sie die fdsan documentation.

Einschränkungen für Nicht-SDK-Schnittstellen

Android 11 enthält aktualisierte Listen mit eingeschränkten Nicht-SDK-Schnittstellen, die auf der Zusammenarbeit mit Android-Entwicklern und den neuesten internen Tests basieren. Wir stellen nach Möglichkeit öffentliche Alternativen zur Verfügung, bevor wir Nicht-SDK-Schnittstellen einschränken.

Wenn deine App nicht auf Android 11 ausgerichtet ist, wirken sich einige dieser Änderungen möglicherweise nicht sofort auf dich aus. Derzeit können Sie zwar einige Nicht-SDK-Schnittstellen verwenden (abhängig vom 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 sich nicht sicher sind, ob Ihre App Nicht-SDK-Schnittstellen verwendet, können Sie Ihre App testen, um dies herauszufinden. Wenn Ihre App auf Nicht-SDK-Schnittstellen basiert, sollten Sie mit der Planung einer Migration zu SDK-Alternativen beginnen. Wir wissen jedoch, dass es für einige Apps gültige Anwendungsfälle für die Verwendung von Nicht-SDK-Schnittstellen gibt. Wenn Sie keine Alternative zur Verwendung einer Nicht-SDK-Schnittstelle für eine Funktion in Ihrer App finden, sollten Sie eine neue öffentliche API anfordern.

Weitere Informationen zu den Änderungen in dieser Android-Version findest du unter Aktualisierungen der Einschränkungen für Nicht-SDK-Schnittstellen in Android 11. Weitere Informationen zu Nicht-SDK-Schnittstellen finden Sie unter Einschränkungen für Nicht-SDK-Schnittstellen.

Gemeinsam genutzte Bibliothek für Maps v1 entfernt

Version 1 der gemeinsam genutzten Maps-Bibliothek wurde in Android 11 vollständig entfernt. Diese Bibliothek wurde zuvor eingestellt und funktioniert für Apps unter Android 10 nicht mehr. Apps, die zuvor auf diese gemeinsam genutzte Bibliothek für Geräte mit Android 9 (API-Level 28) oder niedriger angewiesen waren, sollten stattdessen das Maps SDK for Android verwenden.

Interaktion mit anderen Apps

Inhalts-URIs freigeben

Wenn deine App einen Inhalts-URI mit einer anderen App teilt, muss der Intent URI-Zugriffsberechtigungen gewähren, indem mindestens eines 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 so 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 Contentanbieter ist, der mit dem Inhalts-URI verknüpft ist, prüfen Sie, ob der Contentanbieter nicht exportiert wird. Wir empfehlen diese Best Practice für die Sicherheit bereits.

Mediathek wird geladen

ICU-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", ...) ein Null-Handle zurück.

Verwenden Sie stattdessen den Bibliotheksnamen als Dateinamen, um die Bibliothek zu laden, z. B. dlopen("libicuuc.so", ...).