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 deine App auswirken können. Die folgenden Verhaltensänderungen gelten ausschließlich für Apps, die auf Android 17 oder höher ausgerichtet sind. Wenn deine App auf Android 17 oder höher ausgerichtet ist, solltest du sie gegebenenfalls so ändern, dass sie diese Verhaltensweisen unterstützt.

Sieh dir auch die Liste der Verhaltensänderungen an, die sich auf alle Apps auswirken, die unter Android 17 ausgeführt werden, unabhängig von der targetSdkVersion deiner App.

Hauptfunktion

Android 17 enthält die folgenden Änderungen, die verschiedene Kernfunktionen des Android-Systems ändern oder erweitern.

Neue sperrfreie Implementierung von MessageQueue

Ab Android 17 erhalten Apps, die auf Android 17 (API-Level 37) 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.

Statische finale Felder können jetzt nicht mehr geändert werden

Apps, die unter Android 17 oder höher ausgeführt werden und auf Android 17 oder höher ausgerichtet sind, können static final-Felder nicht ändern. Wenn eine App versucht, ein static final-Feld mithilfe von Reflection zu ändern, führt dies zu einem IllegalAccessException. Wenn Sie versuchen, eines dieser Felder über JNI-APIs (z. B. SetStaticLongField()) zu ändern, stürzt die App ab.

Bedienungshilfen

In Android 17 wurden die folgenden Änderungen vorgenommen, um die Bedienungshilfen zu verbessern.

Unterstützung von Bedienungshilfen für die Eingabe über komplexe IME-Tastaturen

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 InputConnection verwalten, können Kandidatenauswahldaten abrufen, indem sie TextAttribute.isTextSuggestionSelected() aufrufen. Diese Apps sollten dann AccessibilityEvent.setTextChangeTypes() aufrufen, wenn TYPE_VIEW_TEXT_CHANGED-Ereignisse gesendet werden. Bei Apps, die auf Android 17 (API-Level 37) ausgerichtet sind und die Standard-TextView verwenden, ist diese Funktion standardmäßig aktiviert. TextView ist 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önnen AccessibilityEvent.getTextChangeTypes() aufrufen, um die Art der Änderung zu ermitteln und ihre Feedbackstrategien entsprechend anzupassen.

Datenschutz

Android 17 enthält die folgenden Änderungen, um den Datenschutz für Nutzer zu verbessern.

Berechtigung für das lokale Netzwerk für Apps, die auf Android 17 ausgerichtet sind, erforderlich

Zum Testen verfügbar? (Erforderlicher Build) Ja (Android 17 oder höher)
Muss targetSDKVersion geändert werden? (API-Level) Ja (API-Level "CINNAMON_BUN")
Weitere Informationen zu diesem Wert finden Sie in der Dokumentation zum Manifestattribut.

In Android 17 wird die Laufzeitberechtigung ACCESS_LOCAL_NETWORK eingeführt, um Nutzer vor unautorisiertem Zugriff auf das lokale Netzwerk zu schützen. Da dies unter die vorhandene Berechtigungsgruppe NEARBY_DEVICES fällt, werden Nutzer, die bereits andere NEARBY_DEVICES-Berechtigungen erteilt haben, nicht noch einmal aufgefordert. Diese neue Anforderung soll verhindern, dass schädliche Apps uneingeschränkten Zugriff auf das lokale Netzwerk nutzen, um Nutzer heimlich zu verfolgen und zu identifizieren. Durch das Deklarieren und Anfordern dieser Berechtigung kann Ihre App Geräte im lokalen Netzwerk (LAN) wie Smart-Home-Geräte oder Casting-Empfänger erkennen und eine Verbindung zu ihnen herstellen.

Apps, die auf Android 17 (API‑Level 37) oder höher ausgerichtet sind, haben jetzt zwei Möglichkeiten, die Kommunikation mit LAN-Geräten aufrechtzuerhalten: Sie können systemvermittelte, datenschutzfreundliche Geräteauswahlen verwenden, um die Berechtigungsaufforderung zu überspringen, oder diese neue Berechtigung zur Laufzeit explizit anfordern, um die Kommunikation im lokalen Netzwerk aufrechtzuerhalten.

Weitere Informationen finden Sie in der Dokumentation zur Berechtigung für das lokale Netzwerk.

Passwörter auf physischen Geräten ausblenden

If an app targets Android 17 (API level 37) or higher and the user is using a physical input device (for example, an external keyboard), the Android operating system applies the new show_passwords_physical setting to all characters in the password field. By default, that setting hides all password characters.

The Android system shows the last-typed password character to help the user see if they mistyped the password. However, this is much less necessary with larger external keyboards. In addition, devices with external keyboards often have larger displays, which increases the danger of someone seeing the typed password.

If the user is using the device's touchscreen, the system applies the new show_passwords_touch setting.

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.

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 (API-Level 37) oder höher ausgerichtet ist, gilt der in Android 14 eingeführte Schutz für Safer 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 Geräten mit unterschiedlichen Größen und Formfaktoren zu verbessern.

Änderungen an der Plattform-API, um Einschränkungen für Ausrichtung, Größenänderung und Seitenverhältnis auf großen Displays zu ignorieren (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 (API-Level 37) oder höher ausgerichtet sind.

Weitere Informationen finden Sie unter Einschränkungen für Ausrichtung und Größenänderung werden ignoriert.