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
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
If an app targets Android 17 or higher, certificate transparency (CT) is enabled by default. (On Android 16, CT is available but apps had to opt in.)
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)
We introduced Platform API changes in Android 16 to ignore orientation, aspect ratio, and resizability restrictions on large screens (sw >= 600dp) for apps targeting API level 36 or higher. Developers have the option to opt out of these changes with SDK 36, but this opt-out will no longer be available for apps that target Android 17 or higher.
For more information, see Restrictions on orientation and resizability are ignored.