Verhaltensänderungen: alle Apps

Die Android 11-Plattform umfasst Verhaltensänderungen, die sich auf deine App auswirken können. Die folgenden Änderungen gelten für alle Apps, wenn sie unter Android 11 ausgeführt werden, unabhängig von targetSdkVersion. Sie sollten Ihre Anwendung testen und dann bei Bedarf so ändern, dass sie ordnungsgemäß unterstützt wird.

Sieh dir auch die Liste der Änderungen des Verhaltens, die sich nur auf Apps auswirken, die auf Android 11 ausgerichtet sind an.

Datenschutz

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

  • Einmalige Berechtigungen:Nutzer haben die Möglichkeit, vorübergehenden Zugriff auf Standort-, Mikrofon- und Kameraberechtigungen zu gewähren.
  • Sichtbarkeit des Berechtigungsdialogs:Die wiederholte Ablehnung einer Berechtigung impliziert „Nicht mehr fragen“.
  • Datenzugriffsprüfung:Sie erhalten Informationen dazu, wo Ihre Anwendung auf private Daten zugreift, sowohl im eigenen Code Ihrer Anwendung als auch im Code abhängiger Bibliotheken.
  • Berechtigungen für Systembenachrichtigungsfenster:Bestimmten Klassen von Apps wird auf Anfrage automatisch die Berechtigung SYSTEM_ALERT_WINDOW gewährt. Außerdem bringen Intents, die die Intent-Aktion ACTION_MANAGE_OVERLAY_PERMISSION enthalten, Nutzer immer zu einem Bildschirm in den Systemeinstellungen.
  • Dauerhafte SIM-IDs: Unter Android 11 und höher ist der Zugriff auf die nicht rücksetzbaren ICCIDs über die Methode getIccId() eingeschränkt. Die Methode gibt einen leeren String ungleich null zurück. Um eine im Gerät eingesetzte SIM-Karte eindeutig zu identifizieren, verwenden Sie stattdessen die Methode getSubscriptionId(). Die Abo-ID enthält einen Indexwert (beginnend mit 1) zur eindeutigen Identifizierung installierter SIMs, einschließlich physischer und elektronischer. Der Wert dieser Kennung bleibt für die jeweilige SIM-Karte gleich, es sei denn, das Gerät wird auf die Werkseinstellungen zurückgesetzt.

Weitere Informationen finden Sie auf der Seite Datenschutz.

COVID-19-Benachrichtigungen

Unter Android 11 wird die Plattform mit dem COVID-19-Benachrichtigungssystem aktualisiert. Nutzer können jetzt Apps für COVID-19-Benachrichtigungen unter Android 11 ausführen, ohne die Einstellung für den Gerätestandort aktivieren zu müssen. Dies ist eine Ausnahme für das COVID-19-Benachrichtigungssystem, da es so konstruiert ist, dass Apps, die es verwenden, den Gerätestandort nicht über die Bluetooth-Suche ableiten können.

Aus Datenschutzgründen dürfen alle anderen Apps 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 standardmäßige SSLSocket-Implementierung von Android basiert auf Conscrypt. Seit Android 11 baut diese Implementierung intern auf dem SSLEngine von Conscrypt auf.

Scudo-gehärteter Zuweis

Android 11 verwendet intern den Scudo Hardened Allocator, um Heap-Zuweisungen zu verarbeiten. Scudo ist in der Lage, einige Arten von Verstößen gegen die Speichersicherheit zu erkennen und zu beheben. Wenn Sie in nativen Absturzberichten Abstürze im Zusammenhang mit Sportarten (z. B. Scudo ERROR:) sehen, lesen Sie die Dokumentation zur Fehlerbehebung bei Sportgeräten.

App-Nutzungsstatistiken

Zum besseren Schutz der Nutzer speichert Android 11 die App-Nutzungsstatistiken jedes Nutzers in einem verschlüsselten Speicher für Anmeldedaten. Daher können weder das System noch die Anwendungen auf diese Daten zugreifen, es sei denn, isUserUnlocked() gibt true zurück. Dies geschieht nach einer der folgenden Aktionen:

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

Emulator-Unterstützung für 5G

Unter Android 11 werden 5G-APIs hinzugefügt, um deinen Apps die neuesten Funktionen hinzuzufügen. Mit den neuen Funktionen des Android SDK Emulators können Sie die Funktionen beim Hinzufügen testen. Die neue Funktion wurde in der Emulator-Version 30.0.22 hinzugefügt. Wenn Sie die 5G-Netzwerkeinstellung auswählen, wird TelephonyDisplayInfo auf OVERRIDE_NETWORK_TYPE_NR_NSA gesetzt und die geschätzte Bandbreite geändert. Außerdem können Sie die Kosten festlegen, um zu prüfen, ob Ihre Anwendung angemessen auf Änderungen des NET_CAPABILITY_TEMPORARILY_NOT_METERED-Status reagiert.

Leistung und Fehlerbehebung

Fehlerbehebung für JobScheduler API-Aufrufe

Android 11 bietet Debugging-Unterstützung für Apps zur Identifizierung potenzieller JobScheduler API-Aufrufe, 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, wird für JobScheduler API-Aufrufe, die die Ratenbegrenzung überschreiten, RESULT_FAILURE zurückgegeben. Die Limits sind so festgelegt, dass legitime Anwendungsfälle nicht betroffen sind.

Dateideskriptor-Sanitizer (fdsan)

Mit Android 10 wurde fdsan (Dateideskriptor-Sanitizer) eingeführt. fdsan erkennt eine unsachgemäße Handhabung der Eigentümerschaft von Dateideskriptoren, z. B. „Use-after-close“ und „Double-close“. Der Standardmodus für fdsan ändert sich in Android 11. fdsan wird jetzt bei Erkennung eines Fehlers abgebrochen. Das bisherige Verhalten bestand darin, eine Warnung zu protokollieren und fortzufahren. Wenn in Ihrer Anwendung Abstürze aufgrund von fdsan auftreten, finden Sie weitere Informationen in der fdsan documentation.

Einschränkungen für Nicht-SDK-Schnittstellen

Android 11 enthält aktualisierte Listen eingeschränkter Nicht-SDK-Schnittstellen, die auf der Zusammenarbeit mit Android-Entwicklern und den neuesten internen Tests basieren. Wann immer möglich, achten wir darauf, dass öffentliche Alternativen verfügbar sind, bevor wir Nicht-SDK-Schnittstellen einschränken.

Wenn deine App nicht auf Android 11 ausgerichtet ist, betreffen dich einige dieser Änderungen möglicherweise nicht sofort. Sie können derzeit zwar einige Nicht-SDK-Schnittstellen verwenden (abhängig vom Ziel-API-Level Ihrer App), aber die Verwendung von Nicht-SDK-Methoden oder -Feldern birgt immer ein hohes Risiko für Probleme mit Ihrer App.

Wenn Sie sich nicht sicher sind, ob Ihre Anwendung Nicht-SDK-Schnittstellen verwendet, können Sie die Anwendung testen. Wenn Ihre App Nicht-SDK-Schnittstellen verwendet, sollten Sie mit der Planung einer Migration zu SDK-Alternativen beginnen. Trotzdem können einige Apps für die Verwendung von Nicht-SDK-Schnittstellen infrage kommen. Wenn Sie für eine Funktion 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 Aktualisierungen der Einschränkungen für Nicht-SDK-Schnittstellen in Android 11. Weitere Informationen zu Nicht-SDK-Schnittstellen im Allgemeinen finden Sie unter Einschränkungen für Nicht-SDK-Schnittstellen.

Gemeinsam genutzte Bibliothek aus Maps Version 1 entfernt

Version 1 der gemeinsam genutzten Bibliothek in Maps wurde in Android 11 vollständig entfernt. Diese Bibliothek wurde zuvor eingestellt und funktioniert für Apps unter Android 10 nicht mehr. Für Apps, die bisher auf Geräten mit Android 9 (API-Level 28) oder niedriger verwendet wurden, sollte stattdessen das Maps SDK for Android verwendet werden.

Interaktion mit anderen Apps

Inhalts-URIs freigeben

Wenn Ihre App einen Inhalts-URI mit einer anderen App teilt, muss der Intent URI-Zugriffsberechtigungen gewähren. Dazu legen Sie mindestens eines der folgenden Intent-Flags fest: FLAG_GRANT_READ_URI_PERMISSION und FLAG_GRANT_WRITE_URI_PERMISSION. So kann sie auch dann auf den Inhalts-URI zugreifen, wenn sie auf Android 11 ausgerichtet ist. Ihre App muss die Intent-Flags auch dann enthalten, wenn der Inhalts-URI mit einem Inhaltsanbieter verknüpft ist, der nicht Ihrer App gehört.

Wenn Ihre App Inhaber des Contentanbieters 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.

Bibliothek wird geladen

Allgemeine ICU-Bibliothek mit absolutem Pfad wird geladen

Anwendungen, 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 Anwendungen gibt dlopen("/system/lib/libicuuc.so", ...) einen Null-Handle zurück.

Verwenden Sie zum Laden der Bibliothek stattdessen den Namen der Bibliothek als Dateinamen, z. B. dlopen("libicuuc.so", ...).