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
Ab Android 17 erhalten Apps, die auf Android 17 oder höher ausgerichtet sind, eine neue sperrenfreie Implementierung von android.os.MessageQueue. Die neue Implementierung verbessert die Leistung und reduziert fehlende Frames, kann aber Clients beeinträchtigen, die private Felder und Methoden von MessageQueue verwenden.
Weitere Informationen, einschließlich Strategien zur Risikominderung, finden Sie unter Leitfaden zur Verhaltensänderung von MessageQueue.
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
Wenn Ihre App auf Android 17 oder höher ausgerichtet ist, gilt der in Android 14 eingeführte Schutz für das sicherere dynamische Laden von Code (Dynamic Code Loading, DCL) für DEX- und JAR-Dateien jetzt auch für native Bibliotheken.
Alle nativen Dateien, die mit System.load() geladen werden, müssen als schreibgeschützt markiert werden.
Andernfalls wird UnsatisfiedLinkError ausgegeben.
Wir empfehlen, dass Apps nach Möglichkeit keinen Code dynamisch laden, da dies das Risiko, dass eine App durch Code-Injection oder Manipulation von Code kompromittiert wird, erheblich erhöht.
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.