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
The legacy, PNG-based emoji font file (NotoColorEmojiLegacy.ttf
) has been
removed, leaving just the vector-based file. Beginning with Android 13 (API
level 33), the emoji font file used by the system emoji renderer changed from a
PNG-based file to a vector based file. The system retained
the legacy font file in Android 13 and 14 for compatibility reasons, so that
apps with their own font renderers could continue to use the legacy font file
until they were able to upgrade.
To check if your app is affected, search your app's code for references to the
NotoColorEmojiLegacy.ttf
file.
You can choose to adapt your app in a number of ways:
- Use platform APIs for text rendering. You can render text to a bitmap-backed
Canvas
and use that to get a raw image if necessary. - Add COLRv1 font support to your app. The FreeType open source library supports COLRv1 in version 2.13.0 and higher.
- As a last resort, you can bundle the legacy emoji font file
(
NotoColorEmoji.ttf
) into your APK, although in that case your app will be missing the latest emoji updates. For more information, see the Noto Emoji GitHub project page.
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
Mit Android 15 werden strenge Maßnahmen eingeführt, um Betrug mit Einmalpasswörtern (OTP) zu bekämpfen und die vertraulichen Inhalte der Nutzer zu schützen. Dabei liegt der Schwerpunkt auf der Verschärfung des Notification Listener Service und der Bildschirmfreigabe. Zu den wichtigsten Verbesserungen gehören das Entfernen von OTPs aus Benachrichtigungen, auf die nicht vertrauenswürdige Apps zugreifen können, das Ausblenden von Benachrichtigungen während der Bildschirmfreigabe und die Sicherung von App-Aktivitäten, wenn OTPs gepostet werden. Mit diesen Änderungen sollen die vertraulichen Inhalte der Nutzer vor unbefugten Zugriffen geschützt werden.
Entwickler müssen Folgendes beachten, damit ihre Apps mit den Änderungen in Android 15 kompatibel sind:
OTP-Entfernung
Android verhindert, dass nicht vertrauenswürdige Apps, die NotificationListenerService
implementieren, nicht entfernte Inhalte aus Benachrichtigungen lesen, in denen ein OTP erkannt wurde. Vertrauenswürdige Apps wie Verknüpfungen mit Gerätemanagern für Begleitgeräte sind von diesen Einschränkungen ausgenommen.
Schutz bei der Bildschirmfreigabe
- Benachrichtigungsinhalte werden während der Bildschirmfreigabe ausgeblendet, um die Privatsphäre der Nutzer zu schützen. Wenn die App
setPublicVersion()
implementiert, zeigt Android die öffentliche Version der Benachrichtigung an, die in unsicheren Kontexten als Ersatzbenachrichtigung dient. Andernfalls werden die Inhalte der Benachrichtigung ohne weiteren Kontext entfernt. - Vertrauliche Inhalte wie die Passworteingabe werden für externe Betrachter ausgeblendet, um zu verhindern, dass vertrauliche Informationen des Nutzers offengelegt werden.
- Aktivitäten von Apps, die während der Bildschirmfreigabe Benachrichtigungen senden, bei denen ein OTP erkannt wurde, werden ausgeblendet. App-Inhalte sind für den Remote-Betrachter ausgeblendet, wenn die App gestartet wird.
- Zusätzlich zur automatischen Erkennung sensibler Felder durch Android können Entwickler Teile ihrer App manuell mit
setContentSensitivity
als sensibel kennzeichnen. Diese werden dann bei der Bildschirmfreigabe für Remote-Zuschauer ausgeblendet. - Entwickler können unter Entwickleroptionen die Option Schutzmaßnahmen für Bildschirmfreigabe deaktivieren aktivieren, um für Demo- oder Testzwecke von den Schutzmaßnahmen für die Bildschirmfreigabe ausgenommen zu werden. Der standardmäßige Bildschirmrekorder des Systems ist von diesen Änderungen ausgenommen, da die Aufnahmen auf dem Gerät verbleiben.
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.