Verhaltensänderungen: alle Apps

Die Android 11-Plattform enthält 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. Du solltest deine Anwendung testen und dann bei Bedarf anpassen, damit sie korrekt unterstützt werden.

Sieh dir auch die Liste der Verhaltensänderungen an, die nur Apps betreffen, die auf Android 11 ausgerichtet sind.

Datenschutz

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

  • Einmalige Berechtigungen:Damit können Nutzer vorübergehenden Zugriff auf Standort-, Mikrofon- und Kameraberechtigungen gewähren.
  • Sichtbarkeit des Berechtigungsdialogfelds:Wiederholte Ablehnung einer Berechtigung impliziert „Nicht mehr fragen“.
  • Datenzugriffsprüfung:Sie erhalten Informationen darüber, wo Ihre Anwendung auf private Daten zugreift, sowohl im eigenen Code Ihrer Anwendung als auch im Code abhängiger Bibliotheken.
  • Berechtigungen für das Systembenachrichtigungsfenster:Bestimmten Anwendungsklassen wird auf Anfrage automatisch die Berechtigung SYSTEM_ALERT_WINDOW 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.
  • 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 zurück, der nicht null ist. Um eine auf dem Gerät installierte SIM-Karte eindeutig zu identifizieren, verwenden Sie stattdessen die Methode getSubscriptionId(). Die Abo-ID bietet einen Indexwert (beginnend mit 1) für die eindeutige Identifizierung installierter SIMs, einschließlich physischer und elektronischer SIM-Karten. Der Wert dieser Kennung bleibt für die jeweilige SIM-Karte stabil, 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 unter Android 11 Apps für COVID-19-Benachrichtigungen jetzt ausführen, ohne die Einstellung für den Gerätestandort aktivieren zu müssen. Dies stellt nur eine Ausnahme für das COVID-19-Benachrichtigungssystem dar, 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 Standardimplementierung von SSLSocket basiert auf Conscrypt. Seit Android 11 baut diese Implementierung intern auf SSLEngine von Conscrypt auf.

Gehärtete Zuordnungsgeräte

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 Arbeitsspeichersicherheit zu erkennen und zu beheben. Wenn Sie in nativen Absturzberichten Abstürze im Zusammenhang mit Scudo (z. B. Scudo ERROR:) sehen, lesen Sie die Dokumentation zur Fehlerbehebung bei Scudo.

App-Nutzungsstatistiken

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 Anwendungen auf diese Daten zugreifen, es sei denn, isUserUnlocked() gibt true zurück. Dieser Vorgang erfolgt nach einem der folgenden Ereignisse:

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

Wenn Ihre Anwendung bereits eine Bindung an eine Instanz von UsageStatsManager erstellt hat, 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, 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 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

Debugging für JobScheduler API-Aufrufe begrenzt

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 erkennen. Bei Apps, bei denen das Manifestattribut debuggable auf „true“ gesetzt ist, geben JobScheduler API-Aufrufe über die Ratenbegrenzungen hinaus den Wert RESULT_FAILURE zurück. Limits sind so festgelegt, dass legitime Anwendungsfälle davon nicht betroffen sein sollten.

File Deskriptor Sanitizer (fdsan)

Mit Android 10 wurde fdsan eingeführt (File Deskriptor-Sanitizer). fdsan erkennt eine falsche Behandlung der Inhaberschaft 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 der Vorgang fortgesetzt. Wenn in deiner Anwendung Abstürze aufgrund von fdsan auftreten, findest du weitere Informationen unter 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 zwar derzeit einige Nicht-SDK-Schnittstellen verwenden (je nach Ziel-API-Level Ihrer App), aber die Verwendung von Nicht-SDK-Methoden und -Feldern birgt immer ein hohes Risiko für Probleme mit Ihrer App.

Wenn du nicht sicher bist, ob deine App Nicht-SDK-Schnittstellen verwendet, kannst du die App testen, um es herauszufinden. Wenn Ihre App Nicht-SDK-Schnittstellen benötigt, sollten Sie eine Migration zu SDK-Alternativen planen. Uns ist aber bewusst, dass es bei einigen 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 gemeinsam genutzten Bibliothek in Maps wurde in Android 11 vollständig entfernt. Diese Bibliothek wurde bereits eingestellt und funktioniert nicht mehr für Apps unter Android 10. Apps, die bisher auf Geräten mit Android 9 (API-Level 28) oder niedriger von dieser gemeinsam genutzten Bibliothek verwendet wurden, sollten stattdessen das Maps SDK for Android verwenden.

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 muss mindestens eines der folgenden Intent-Flags festgelegt werden: FLAG_GRANT_READ_URI_PERMISSION und FLAG_GRANT_WRITE_URI_PERMISSION. Auf diese Weise kann die andere App, die auf Android 11 ausgerichtet ist, weiterhin auf den Inhalts-URI zugreifen. 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 der Contentanbieter, der mit dem Inhalts-URI verknüpft ist, zu Ihrer App gehört, achten Sie darauf, dass der Contentanbieter nicht exportiert wird. Wir empfehlen diese Best Practice für die Sicherheit bereits.

Mediathek wird geladen

Allgemeine ICU-Bibliothek mit absolutem Pfad wird geladen

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

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