Verhaltensänderungen: Apps, die auf Android 17 oder höher ausgerichtet sind

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 InputConnection can retrieve candidate selection data by calling TextAttribute.isTextSuggestionSelected(). These apps should then call AccessibilityEvent.setTextChangeTypes() when dispatching TYPE_VIEW_TEXT_CHANGED events. Apps targeting Android 17 that use the standard TextView will have this feature enabled by default. (That is, TextView will 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_CHANGED events can call AccessibilityEvent.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 IntentSender ausweiten. Entwickler müssen die alte Konstante MODE_BACKGROUND_ACTIVITY_START_ALLOWED nicht mehr verwenden. Stattdessen sollten Sie detaillierte Steuerelemente wie MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE verwenden, 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_INTERFACE explizit 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 INTERNET als aufgeteilte Berechtigung behandelt. Apps, die auf niedrigere API-Levels ausgerichtet sind, wird diese Berechtigung automatisch erteilt, wenn sie INTERNET haben.
  • 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.