Die Android 15-Plattform enthält Verhaltensänderungen, die sich auf Ihre App auswirken können. Die folgenden Verhaltensänderungen gelten für alle Apps, die unter Android 15 ausgeführt werden, unabhängig von targetSdkVersion
. Sie sollten Ihre App testen und sie gegebenenfalls so ändern, dass sie diese Anforderungen erfüllt.
Lesen Sie sich auch die Liste der Verhaltensänderungen durch, die sich nur auf Apps mit Ausrichtung auf Android 15 auswirken.
Hauptfunktion
In Android 15 wurden verschiedene Kernfunktionen des Android-Systems geändert oder erweitert.
Änderungen am Status „Angehalten“ des Pakets
Die Absicht des Paketstatus FLAG_STOPPED
, bei dem Nutzer AOSP-Builds durch langes Drücken eines App-Symbols und Auswählen von „Beenden erzwingen“ durchführen können, wurde schon immer in diesem Zustand belassen, bis der Nutzer die App explizit aus diesem Status entfernt, indem er sie startet oder indirekt mit der App interagiert (über das Sharesheet oder ein Widget, indem er die App als Live-Hintergrund auswählt usw.). In Android 15 aktualisieren wir das Verhalten des Systems, um es an dieses beabsichtigte Verhalten anzupassen. Apps sollten nur durch direkte oder indirekte Nutzeraktionen aus dem beendeten Zustand entfernt werden.
Zusätzlich zu den vorhandenen Einschränkungen bricht das System alle ausstehenden Intents ab, wenn die App auf einem Gerät mit Android 15 in den beendeten Status wechselt. Wenn die Aktion des Nutzers die App aus dem Status „Angehalten“ entfernt, wird die ACTION_BOOT_COMPLETED
-Broadcast an die App gesendet. So haben Sie die Möglichkeit, ausstehende Intents noch einmal zu registrieren.
Mit der neuen Methode ApplicationStartInfo.wasForceStopped()
können Sie prüfen, ob die App beendet wurde.
Unterstützung für Seitengrößen von 16 KB
Bisher wurden in Android nur Seitengrößen von 4 KB unterstützt, eine optimierte Systemspeicherleistung für die durchschnittliche In der Regel gab es Android-Geräte. Ab Android 15 unterstützt AOSP Geräte, die für die Verwendung einer Seitengröße von 16 KB (16 KB) konfiguriert sind Geräte). Wenn Ihre App NDK-Bibliotheken verwendet, können Sie entweder direkt oder indirekt über ein SDK, müssen Sie Ihre App die auf diesen 16-KB-Geräten funktionieren.
Da Gerätehersteller immer mehr Geräte entwickeln, physischen Arbeitsspeicher (RAM), verwenden viele dieser Geräte 16 KB (und größer werden), um die Leistung des Geräts zu optimieren. Wird hinzugefügt wird die Unterstützung für Geräte mit einer Seitengröße von 16 KB ermöglicht, Geräte und unterstützt Ihre App dabei, von der damit verbundenen Leistung Verbesserungen. Ohne Neukompilierung funktionieren Apps auf Geräten mit 16 KB möglicherweise nicht wenn sie in zukünftigen Android-Versionen produktionsreif sind.
Damit Sie Unterstützung für Ihre App hinzufügen können, haben wir eine Anleitung zur Überprüfung der falls Ihre App betroffen ist, Ihre App neu zu erstellen (falls zutreffend) und wie Sie Ihre App eine 16 KB-Umgebung mit Emulatoren (einschließlich Android 15) System-Images für den Android-Emulator).
Vorteile und Leistungssteigerungen
Geräte, die mit einer Seitengröße von 16 KB konfiguriert sind, benötigen im Durchschnitt etwas mehr Arbeitsspeicher, erzielen aber auch verschiedene Leistungsverbesserungen für das System und die Apps:
- Kürzere App-Startzeiten, während das System unter Speicherauslastung steht: im Durchschnitt 3,16 % niedriger, mit deutlicheren Verbesserungen (bis zu 30%) bei einigen von uns getesteten Apps
- Verringerter Stromverbrauch beim Starten der App: durchschnittlich 4,56% weniger
- Schnellerer Kamerastart: 4,48% schnellere Heißstarts und 6,60% schnellere Kaltstarts im Durchschnitt
- Verbesserte Systemstartzeit: durchschnittlich um 8% (ca. 950 Millisekunden)
Diese Verbesserungen basieren auf unseren ersten Tests. Die Ergebnisse auf tatsächlichen Geräten werden sich wahrscheinlich unterscheiden. Im Rahmen unserer Tests werden wir zusätzliche Analysen zu den potenziellen Vorteilen für Apps durchführen.
Prüfen, ob Ihre App betroffen ist
Wenn Ihre App nativen Code verwendet, sollten Sie Ihre App mit Unterstützung für 16 KB-Geräte neu erstellen. Wenn Sie nicht sicher sind, ob Ihre App nativen Code verwendet, können Sie mit dem APK-Analysetool prüfen, ob nativer Code vorhanden ist, und dann die Ausrichtung der ELF-Segmente für alle gefundenen freigegebenen Bibliotheken prüfen.
Wenn in Ihrer App nur Code verwendet wird, der in der Programmiersprache Java oder Kotlin geschrieben ist, einschließlich aller Bibliotheken oder SDKs, unterstützt Ihre App bereits Geräte mit 16 KB. Wir empfehlen Ihnen jedoch, Ihre App in einer 16-KB-Umgebung zu testen, um sicherzustellen, dass es keine unerwarteten Rückschritte beim App-Verhalten gibt.
Erforderliche Änderungen für einige Apps zur Unterstützung des privaten Bereichs
Privater Bereich ist eine neue Funktion in Android 15, mit der Nutzer einen separaten Bereich auf ihrem Gerät erstellen, in dem sie sensible Apps fernhalten können eine zusätzliche Sicherheitsebene vor neugierigen Blicken. Da Apps in privaten Bereich eingeschränkt sind, müssen einige Arten von Apps zusätzliche Schritte, um Apps im privaten Modus eines Nutzers sehen und mit ihnen interagieren zu können Leerzeichen.
Alle Apps
Da Apps im privaten Bereich in einem separaten Nutzerprofil gespeichert werden, Arbeitsprofilen hinzugefügt werden, sollten Apps nicht davon ausgehen, dass installierte Kopien der App, die nicht im Hauptprofil enthalten sind, befinden sich im Arbeitsprofil. Wenn die Logik Ihrer App im Arbeitsprofil entspricht und diese Annahme basiert. müssen Sie diese Logik anpassen.
Medizinische Apps
Wenn ein Nutzer den privaten Bereich sperrt, werden alle Apps im privaten Bereich beendet. und diese Apps können keine Aktivitäten im Vordergrund oder im Hintergrund ausführen, Benachrichtigungen angezeigt. Dieses Verhalten kann die Nutzung und der im privaten Bereich installierten medizinischen Apps.
Bei der Einrichtung des privaten Bereichs werden Nutzer gewarnt, dass der private Bereich nicht Geeignet für Apps, die wichtige Funktionen im Vordergrund oder Hintergrund ausführen müssen Aktivitäten, z. B. das Anzeigen von Benachrichtigungen von medizinischen Apps. Sie können jedoch Apps nicht erkennen, ob sie im privaten Bereich verwendet werden, sodass dem Nutzer in diesem Fall keine Warnung angezeigt wird.
Wenn du eine medizinische App entwickelst, solltest du dir daher ansehen, auf Ihre App auswirken und geeignete Maßnahmen ergreifen, z. B. die Nutzer darüber informieren, deine App im privaten Bereich installieren, um Unterbrechungen wichtiger Apps zu vermeiden Funktionen.
Launcher-Apps
Wenn Sie eine Launcher-App entwickeln, müssen Sie vor der Bereitstellung von Apps im ist der private Bereich sichtbar:
- Ihre App muss als Standard-Launcher-App für das Gerät festgelegt sein,
mit der Rolle
ROLE_HOME
ist. - Deine App muss die
ACCESS_HIDDEN_PROFILES
deklarieren in der Manifestdatei Ihrer App eine normale Berechtigung angeben.
Launcher-Apps, die die Berechtigung ACCESS_HIDDEN_PROFILES
deklarieren, müssen
folgende Anwendungsfälle für den privaten Bereich:
- Ihre App benötigt einen separaten Launcher-Container für Apps, die im
im privaten Bereich. Verwenden Sie die Methode
getLauncherUserInfo()
, um um zu bestimmen, welche Art von Nutzerprofil verarbeitet wird. - Der Nutzer muss den Container für den privaten Bereich ein- und ausblenden können.
- Der Nutzer muss den Container für den privaten Bereich sperren und entsperren können. Verwenden Sie
Methode
requestQuietModeEnabled()
zum Sperren (durch übertrue
) oder entsperren (durch Übergabe vonfalse
) den privaten Bereich. Wenn die Sperre aktiviert ist, sollten keine Apps im Container für den privaten Bereich sichtbar sein oder die über Mechanismen wie die Suche auffindbar sind. Ihre App sollte eine Empfänger für die
ACTION_PROFILE_AVAILABLE
undACTION_PROFILE_UNAVAILABLE
überträgt und aktualisiert die Benutzeroberfläche in Ihrer App, wenn der private Bereich gesperrt oder entsperrt ist Containeränderungen. Beide Broadcasts umfassenEXTRA_USER
, mit dem deine App auf die Nutzer mit einem privaten Profil.Sie können auch die Methode
isQuietModeEnabled()
verwenden, um Prüfen Sie, ob das Profil im privaten Bereich gesperrt ist.
App Store-Apps
Der private Bereich enthält die Schaltfläche „Apps installieren“ Schaltfläche zum Starten einer impliziten
Apps im privaten Bereich des Nutzers installieren. Damit Ihre App
diesen impliziten Intent empfangen, ein <intent-filter>
deklarieren
in der Manifestdatei Ihrer App mit einem <category>
von
CATEGORY_APP_MARKET
PNG-basierte Emoji-Schriftart entfernt
Die alte PNG-basierte Emoji-Schriftartdatei (NotoColorEmojiLegacy.ttf
) wurde
sodass nur die vektorbasierte Datei übrig bleibt. Ab Android 13 (API)
Level 33), wurde die Emoji-Schriftartdatei, die vom System-Emoji-Renderer verwendet wird, von einer
PNG- und vektorbasierte Datei: Das System blieb
die alte Schriftartdatei unter Android 13 und 14 aus Kompatibilitätsgründen, sodass
Apps mit eigenen Schriftart-Renderern können weiterhin die alte Schriftartdatei verwenden.
bis das Upgrade durchgeführt werden konnte.
Um zu überprüfen, ob Ihre App betroffen ist, suchen Sie im Code Ihrer App nach Verweisen auf die
NotoColorEmojiLegacy.ttf
-Datei.
Sie können Ihre App auf verschiedene Arten anpassen:
- Plattform-APIs für das Textrendering verwenden Sie können Text als Bitmap-Basis
Canvas
und verwenden Sie diese bei Bedarf, um ein Rohbild abzurufen. - Unterstützung für COLRv1-Schriftarten in der App hinzufügen. Open-Source-Bibliothek von FreeType unterstützt COLRv1 in Version 2.13.0 und höher liegen.
- Als letzte Option kannst du auch die alte Emoji-Schriftartdatei bündeln.
(
NotoColorEmoji.ttf
) in Ihr APK einfügen, aber in diesem Fall fehlen in deiner App die neuesten Emoji-Updates. Für Weitere Informationen finden Sie im GitHub-Projekt "Noto Emoji" .
Die Mindestversion der SDK-Zielversion wurde von 23 auf 24 erhöht
Android 15 baut auf der
die in Android 14 vorgenommene Änderungen
noch weiter zu verbessern. In Android 15 werden Apps mit einem
targetSdkVersion
mit einer Version unter 24 können nicht installiert werden.
Wenn Anwendungen moderne API-Levels erfüllen müssen, können Sie die Sicherheit verbessern und
Datenschutz.
Malware zielt häufig auf niedrigere API-Level ab, um Sicherheit und Datenschutz zu umgehen
die in höheren Android-Versionen eingeführt wurden. Beispiel:
einige Malware-Apps einen targetSdkVersion
von 22, um zu verhindern, dass sie
2015 durch Android 6.0 Marshmallow (API) eingeführtes Laufzeitberechtigungsmodell
Stufe 23). Durch diese Android 15-Änderung wird es Malware schwerer, Sicherheitsrisiken zu umgehen
und Verbesserungen beim Datenschutz. Versuch, eine App zu installieren, die auf eine niedrigere API ausgerichtet ist
führt zu einem Installationsfehler mit einer Meldung wie der folgenden
in Logcat angezeigt:
INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7
Auf Geräten mit einem Upgrade auf Android 15: alle Apps mit einem um targetSdkVersion
niedrigeren
als 24 installiert sind.
Wenn du eine App testen musst, die auf ein älteres API-Level ausgerichtet ist, verwende den folgenden ADB-Code Befehl:
adb install --bypass-low-target-sdk-block FILENAME.apk
Sicherheit und Datenschutz
Android 15 introduces robust measures to combat one-time passcode (OTP) fraud and to protect the user's sensitive content, focusing on hardening the Notification Listener Service and screenshare protections. Key enhancements include redacting OTPs from notifications accessible to untrusted apps, hiding notifications during screenshare, and securing app activities when OTPs are posted. These changes aim to keep the user's sensitive content safe from unauthorized actors.
Developers need to be aware of the following to ensure their apps are compatible with the changes in Android 15:
OTP Redaction
Android will stop untrusted apps that implement a
NotificationListenerService
from reading unredacted content
from notifications where an OTP has been detected. Trusted apps such as
companion device manager associations are exempt from these restrictions.
Screenshare Protection
- Notification content is hidden during screen sharing sessions to preserve
the user's privacy. If the app implements
setPublicVersion()
, Android shows the public version of the notification which serves as a replacement notification in insecure contexts. Otherwise, the notification content is redacted without any further context. - Sensitive content like password input is hidden from remote viewers to prevent revealing the user's sensitive information.
- Activities from apps that post notifications during screenshare where an OTP has been detected will be hidden. App content is hidden from the remote viewer when launched.
- Beyond Android's automatic identification of sensitive fields, developers
can manually mark parts of their app as sensitive using
setContentSensitivity
, which is hidden from remote viewers during screenshare. - Developers can choose to toggle the Disable screen share protections option under Developer Options to be exempted from the screenshare protections for demo or testing purposes. The default system screen recorder is exempted from these changes, since the recordings remain on-device.
Kamera und Medien
Unter Android 15 werden die folgenden Änderungen am Kamera- und Medienverhalten für alle Apps vorgenommen.
Bei der direkten und Offload-Audiowiedergabe werden zuvor geöffnete direkte oder Offload-Audiotracks ungültig, wenn die Ressourcenlimits erreicht werden.
Vor Android 15 forderte eine App die direkte oder Auslagerung der Audiowiedergabe an, während eine andere App Audio abspielte. Wenn die Ressourcenlimits erreicht wurden, konnte die App kein neues AudioTrack
öffnen.
Wenn eine App die Wiedergabe direkt oder auslagernd anfordert und die Ressourcenlimits erreicht sind, werden ab Android 15 alle derzeit geöffneten AudioTrack
-Objekte ungültig, sodass die neue Trackanfrage nicht ausgeführt werden kann.
Direkte und ausgelagerte Audiotracks werden in der Regel für die Wiedergabe komprimierter Audioformate geöffnet. Zu den häufigsten Anwendungsfällen für die direkte Audiowiedergabe gehört das Streaming von codiertem Audio über HDMI auf einen Fernseher. Offload-Tracks werden normalerweise verwendet, um komprimierte Audiodaten auf einem Mobilgerät mit Hardware-DSP-Beschleunigung abzuspielen.)
Nutzerfreundlichkeit und System-UI
Android 15 enthält einige Änderungen, die für eine einheitlichere und intuitivere Nutzererfahrung sorgen sollen.
Animationen für intelligente „Zurück“-Touch-Geste für Apps aktiviert, die die Funktion aktiviert haben
Ab Android 15 wurde die Entwickleroption für vorhergehende Back-Animationen entfernt. Systemanimationen wie „Zurück zum Startbildschirm“, „Cross-Tasks“ und „Cross-Aktivitäten“ werden jetzt für Apps angezeigt, die entweder vollständig oder auf Aktivitätsebene die vorausschauende „Zurück“-Touch-Geste aktiviert haben. Wenn Ihre App betroffen ist, gehen Sie so vor:
- Prüfen Sie, ob Ihre App ordnungsgemäß migriert wurde, um die automatische Prognosefunktion zu verwenden.
- Sorgen Sie dafür, dass die Fragmentübergänge mit der vorausschauenden Zurück-Navigation funktionieren.
- Migrieren Sie weg von Animations- und Framework-Übergängen und verwenden Sie stattdessen Animator- und Androidx-Übergänge.
- Migrieren Sie weg von Back-Stacks, die
FragmentManager
nicht bekannt sind. Verwenden Sie stattdessen Back Stacks, die vonFragmentManager
oder der Navigationskomponente verwaltet werden.
Widgets werden deaktiviert, wenn der Nutzer eine App erzwungen beendet
Wenn ein Nutzer das Beenden einer App auf einem Gerät mit Android 15 erzwingt, deaktiviert das System vorübergehend alle Widgets der App. Die Widgets sind ausgegraut und der Nutzer kann nicht mit ihnen interagieren. Das liegt daran, dass ab Android 15 alle ausstehenden Intents einer App abgebrochen werden, wenn das Beenden der App erzwungen wird.
Das System aktiviert diese Widgets wieder, wenn der Nutzer die App das nächste Mal startet.
Weitere Informationen finden Sie unter Änderungen am Status „Paket angehalten“.
Statusleiste-Chip für die Medienprojektion benachrichtigt Nutzer über Bildschirmfreigabe, Streaming und Aufzeichnung
Screen projection exploits expose private user data such as financial information because users don't realize their device screen is being shared. Android has until now shown screen cast and screen record icons on the status bar, but the icons are small and often overlooked. Also, stopping screen sharing or recording is cumbersome because controls are in Quick Settings.
Android 15 introduces a new status bar chip that is large and prominent, which should alert users to any in-progress screen projection. Users can tap the chip to stop their screen from being shared, cast, or recorded.
To provide an intuitive user experience, screen projection now automatically stops when the device screen is locked.
Benefits and performance gains
The new media projection status bar chip enhances the user experience as follows:
- Alerts users to in-progress screen sharing, casting, or recording
- Enable users to terminate screen projection by tapping the chip
Automatic suspension of screen projection when the device screen is locked ensures user privacy.
Check if your app is impacted
By default, your app includes the new status bar chip and automatically suspends
screen projection when the lock screen activates. Test your app by implementing
the
onStop()
method of the
MediaProjection.Callback
.
Verify that your app responds appropriately when the screen projection stops as
a result of the user tapping the status bar chip or when the lock screen
activates.
Einstellung von Produkten und Funktionen
Mit jeder Version können bestimmte Android APIs veraltet werden oder müssen umgestaltet werden, um Entwicklern mehr Komfort zu bieten oder neue Plattformfunktionen zu unterstützen. In diesen Fällen werden die veralteten APIs offiziell eingestellt und Entwickler werden auf alternative APIs verwiesen.
Das bedeutet, dass wir die offizielle Unterstützung für die APIs eingestellt haben, sie aber weiterhin für Entwickler verfügbar sind. Weitere Informationen zu wichtigen Einstellung von Funktionen in dieser Android-Version finden Sie auf der Seite zu eingestellten Funktionen.