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
This feature introduces new AccessibilityEvent and TextAttribute
APIs to enhance screen reader spoken feedback for CJKV language input. CJKV IME
apps can now signal whether a text conversion candidate has been selected during
text composition. Apps with edit fields can specify text change types when
sending text changed accessibility events.
For example, apps can specify that a text change occurred during text
composition, or that a text change resulted from a commit.
Doing this enables accessibility
services such as screen readers to deliver more precise feedback based on the
nature of the text modification.
App adoption
IME Apps: When setting composing text in edit fields, IMEs can use
TextAttribute.Builder.setTextSuggestionSelected()to indicate whether a specific conversion candidate was selected.Apps with Edit Fields: Apps that maintain a custom
InputConnectioncan retrieve candidate selection data by callingTextAttribute.isTextSuggestionSelected(). These apps should then callAccessibilityEvent.setTextChangeTypes()when dispatchingTYPE_VIEW_TEXT_CHANGEDevents. Apps targeting Android 17 that use the standardTextViewwill have this feature enabled by default. (That is,TextViewwill handle retrieving data from the IME and setting text change types when sending events to accessibility services).Accessibility Services: Accessibility services that process
TYPE_VIEW_TEXT_CHANGEDevents can callAccessibilityEvent.getTextChangeTypes()to identify the nature of the modification and adjust their feedback strategies accordingly.
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.