Wie bei früheren Versionen enthält Android 17 Verhaltensänderungen, die sich auf Ihre App auswirken können. Die folgenden Verhaltensänderungen gelten ausschließlich für Apps, die auf Android 17 oder höher ausgerichtet sind. Wenn Ihre App auf Android 17 oder höher ausgerichtet ist, sollten Sie sie gegebenenfalls so anpassen, dass sie diese Verhaltensweisen unterstützt.
Sehen Sie sich auch die Liste der Verhaltensänderungen an, die sich auf alle Apps auswirken, die unter Android 17 ausgeführt werden, unabhängig vom targetSdkVersion Ihrer App.
Hauptfunktion
Android 17 umfasst die folgenden Änderungen, die verschiedene Kernfunktionen des Android-Systems modifizieren oder erweitern.
Neue sperrenfreie Implementierung von MessageQueue
Beginning with Android 17, apps targeting Android 17
or higher receive a new lock-free implementation of
android.os.MessageQueue. The new implementation improves performance and
reduces missed frames, but may break clients that reflect on MessageQueue
private fields and methods.
For more information, including mitigation strategies, see MessageQueue behavior change guidance.
Bedienungshilfen
In Android 17 wurden die folgenden Änderungen vorgenommen, um die Barrierefreiheit zu verbessern.
Unterstützung von Bedienungshilfen für die Eingabe über physische Tastaturen mit komplexen IME-Methoden
Mit dieser Funktion werden neue AccessibilityEvent- und TextAttribute-APIs eingeführt, um das gesprochene Feedback von Screenreadern für die Eingabe von CJKV-Sprachen zu verbessern. CJKV-IME-Apps können jetzt signalisieren, ob während der Texterstellung ein Kandidat für die Textkonvertierung ausgewählt wurde. Apps mit Bearbeitungsfeldern können Textänderungstypen angeben, wenn sie Ereignisse zur Barrierefreiheit für geänderten Text senden.
Apps können beispielsweise angeben, dass während der Texterstellung eine Textänderung vorgenommen wurde oder dass eine Textänderung durch einen Commit erfolgt ist.
So können Bedienungshilfen wie Screenreader genaueres Feedback geben, das auf der Art der Textänderung basiert.
App-Akzeptanz
IME-Apps:Beim Festlegen von Text in Bearbeitungsfeldern können IMEs mit
TextAttribute.Builder.setTextSuggestionSelected()angeben, ob ein bestimmter Konvertierungskandidat ausgewählt wurde.Apps mit „Felder bearbeiten“:Apps, die ein benutzerdefiniertes
InputConnectionverwalten, können Kandidatenauswahldaten abrufen, indem sieTextAttribute.isTextSuggestionSelected()aufrufen. Diese Apps sollten dannAccessibilityEvent.setTextChangeTypes()aufrufen, wennTYPE_VIEW_TEXT_CHANGED-Ereignisse gesendet werden. Bei Apps, die auf Android 17 ausgerichtet sind und die Standard-TextViewverwenden, ist diese Funktion standardmäßig aktiviert.TextViewist für das Abrufen von Daten aus der IME und das Festlegen von Textänderungstypen beim Senden von Ereignissen an Barrierefreiheitsdienste zuständig.Bedienungshilfen:Bedienungshilfen, die
TYPE_VIEW_TEXT_CHANGED-Ereignisse verarbeiten, könnenAccessibilityEvent.getTextChangeTypes()aufrufen, um die Art der Änderung zu ermitteln und ihre Feedbackstrategien entsprechend anzupassen.
Sicherheit
In Android 17 wurden die folgenden Verbesserungen an der Geräte- und App-Sicherheit vorgenommen.
Aktivitätssicherheit
In Android 17 wird die Plattform weiterhin in Richtung einer „secure-by-default“-Architektur verschoben. Es werden eine Reihe von Verbesserungen eingeführt, die darauf ausgelegt sind, Exploits mit hohem Schweregrad wie Phishing, Interaction Hijacking und Confused Deputy-Angriffe zu minimieren. Mit diesem Update müssen Entwickler neue Sicherheitsstandards explizit aktivieren, um die Kompatibilität ihrer Apps und den Schutz ihrer Nutzer zu gewährleisten.
Wichtige Auswirkungen für Entwickler:
- BAL-Härtung und verbesserte Einwilligung: Wir optimieren die Einschränkungen für den Start von Hintergrundaktivitäten (Background Activity Launch, BAL), indem wir den Schutz auf
IntentSenderausweiten. Entwickler müssen die alte KonstanteMODE_BACKGROUND_ACTIVITY_START_ALLOWEDnicht mehr verwenden. Stattdessen sollten Sie detaillierte Steuerelemente wieMODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLEverwenden, die den Start von Aktivitäten auf Szenarien beschränken, in denen die aufrufende App sichtbar ist. Dadurch wird die Angriffsfläche erheblich verringert. - Tools zur Einführung:Entwickler sollten den Strict-Modus und aktualisierte Lint-Prüfungen verwenden, um alte Muster zu erkennen und die Einhaltung zukünftiger SDK-Anforderungen für die Zielgruppe sicherzustellen.
Schutz für Localhost
Zur Verbesserung der Plattformsicherheit und des Datenschutzes der Nutzer wird in Android 17 die neue Berechtigung USE_LOOPBACK_INTERFACE eingeführt, die bei der Installation erteilt werden muss. Durch diese Änderung wird die app- und profilübergreifende Kommunikation über die Loopback-Schnittstelle (z. B. 127.0.0.1 oder ::1) eingeschränkt, die zuvor mit der Berechtigung INTERNET implizit zulässig war. Für Apps, die auf Android 17 oder höher ausgerichtet sind, gelten die folgenden Regeln:
- Gegenseitige Einwilligung erforderlich:Die app- und profilübergreifende Kommunikation ist jetzt standardmäßig blockiert. Damit eine Verbindung hergestellt werden kann, müssen sowohl die sendende als auch die empfangende App die Berechtigung
USE_LOOPBACK_INTERFACEexplizit in ihren Manifesten deklarieren. - Intra-App-Traffic ausgenommen:Die Loopback-Kommunikation innerhalb derselben App (Intra-App-Kommunikation) ist davon nicht betroffen und erfordert keine neue Berechtigung.
- Verhalten des Ziel-SDK:
- Die App ist auf Android 17 oder höher ausgerichtet: Die Berechtigung muss explizit angefordert werden. Wenn sie fehlt, schlagen Socket-Vorgänge (z. B. TCP-Verbindung oder UDP-Sendung) fehl und geben in der Regel einen
EPERM-Fehler (Vorgang nicht zulässig) zurück. - Die App ist auf API‑Level 36 oder niedriger ausgerichtet: Die Berechtigung wird auf
INTERNETals aufgeteilte Berechtigung behandelt. Apps, die auf niedrigere API-Levels ausgerichtet sind, wird diese Berechtigung automatisch erteilt, wenn sieINTERNEThaben.
- Die App ist auf Android 17 oder höher ausgerichtet: Die Berechtigung muss explizit angefordert werden. Wenn sie fehlt, schlagen Socket-Vorgänge (z. B. TCP-Verbindung oder UDP-Sendung) fehl und geben in der Regel einen
- Kompatibilitätswarnung:Wenn eine empfangende App ihr Ziel auf Android 17 aktualisiert, diese Berechtigung aber nicht anfordert, werden eingehende Verbindungen von anderen Apps abgelehnt, auch wenn die sendende App auf ein niedrigeres API-Level ausgerichtet ist.
CT standardmäßig aktivieren
Wenn eine App auf Android 17 oder höher ausgerichtet ist, ist Certificate Transparency (CT) standardmäßig aktiviert. Unter Android 16 ist CT verfügbar, aber Apps mussten aktiviert werden.
Sicherere native DCL – C
If your app targets Android 17 or higher, the Safer Dynamic Code Loading (DCL) protection introduced in Android 14 for DEX and JAR files now extends to native libraries.
All native files loaded using System.load() must be marked as read-only.
Otherwise, the system throws UnsatisfiedLinkError.
We recommend that apps avoid dynamically loading code whenever possible, as doing so greatly increases the risk that an app can be compromised by code injection or code tampering.
Formfaktoren von Geräten
Android 17 enthält die folgenden Änderungen, um die Nutzerfreundlichkeit auf einer Reihe von Gerätegrößen und ‑formfaktoren zu verbessern.
Plattform-API-Änderungen zum Ignorieren von Einschränkungen für Ausrichtung, Größenänderung und Seitenverhältnis auf großen Displays (sw>=600dp)
In Android 16 haben wir Änderungen an der Plattform-API eingeführt, um Einschränkungen für Ausrichtung, Seitenverhältnis und Größenänderung auf großen Bildschirmen (sw >= 600 dp) zu ignorieren, wenn Apps auf API-Level 36 oder höher ausgerichtet sind. Entwickler haben die Möglichkeit, diese Änderungen mit SDK 36 zu deaktivieren. Diese Deaktivierung ist jedoch nicht mehr für Apps verfügbar, die auf Android 17 oder höher ausgerichtet sind.
Weitere Informationen finden Sie unter Einschränkungen für Ausrichtung und Größenänderung werden ignoriert.