Verhaltensänderungen: alle Apps

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 auswirken, die auf Android 15 ausgerichtet sind.

Hauptfunktion

In Android 15 wurden verschiedene Kernfunktionen des Android-Systems geändert oder erweitert.

Änderungen am Status „Angehalten“ des Pakets

The intention of the package FLAG_STOPPED state (which users can engage in AOSP builds by long-pressing an app icon and selecting "Force Stop") has always been to keep apps in this state until the user explicitly removes the app from this state by directly launching the app or indirectly interacting with the app (through the sharesheet or a widget, selecting the app as live wallpaper, etc.). In Android 15, we've updated the behavior of the system to be aligned with this intended behavior. Apps should only be removed from the stopped state through direct or indirect user action.

To support the intended behavior, in addition to the existing restrictions, the system also cancels all pending intents when the app enters the stopped state on a device running Android 15. When the user's actions remove the app from the stopped state, the ACTION_BOOT_COMPLETED broadcast is delivered to the app providing an opportunity to re-register any pending intents.

You can call the new ApplicationStartInfo.wasForceStopped() method to confirm whether the app was put into the stopped state.

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

Private space is a new feature in Android 15 that lets users create a separate space on their device where they can keep sensitive apps away from prying eyes, under an additional layer of authentication. Because apps in the private space have restricted visibility, some types of apps need to take additional steps to be able to see and interact with apps in a user's private space.

All apps

Because apps in the private space are kept in a separate user profile, similar to work profiles, apps shouldn't assume that any installed copies of their app that aren't in the main profile are in the work profile. If your app has logic related to work profile apps that make this assumption, you'll need to adjust this logic.

Medical apps

When a user locks the private space, all apps in the private space are stopped, and those apps can't perform foreground or background activities, including showing notifications. This behavior might critically impact the use and function of medical apps installed in the private space.

The private space setup experience warns users that the private space is not suitable for apps that need to perform critical foreground or background activities, such as showing notifications from medical apps. However, apps can't determine whether or not they're being used in the private space, so they can't show a warning to the user for this case.

For these reasons, if you develop a medical app, review how this feature might impact your app and take appropriate actions—such as informing your users not to install your app in the private space—to avoid disrupting critical app capabilities.

Launcher apps

If you develop a launcher app, you must do the following before apps in the private space will be visible:

  1. Your app must be assigned as the default launcher app for the device—that is, possessing the ROLE_HOME role.
  2. Your app must declare the ACCESS_HIDDEN_PROFILES normal permission in your app's manifest file.

Launcher apps that declare the ACCESS_HIDDEN_PROFILES permission must handle the following private space use cases:

  1. Your app must have a separate launcher container for apps installed in the private space. Use the getLauncherUserInfo() method to determine which type of user profile is being handled.
  2. The user must be able to hide and show the private space container.
  3. The user must be able to lock and unlock the private space container. Use the requestQuietModeEnabled() method to lock (by passing true) or unlock (by passing false) the private space.
  4. While locked, no apps in the private space container should be visible or discoverable through mechanisms such as search. Your app should register a receiver for the ACTION_PROFILE_AVAILABLE and ACTION_PROFILE_UNAVAILABLE broadcasts and update the UI in your app when the locked or unlocked state of the private space container changes. Both of these broadcasts include EXTRA_USER, which your app can use to refer to the private profile user.

    You can also use the isQuietModeEnabled() method to check whether the private space profile is locked or not.

App store apps

The private space includes an "Install Apps" button that launches an implicit intent to install apps into the user's private space. In order for your app to receive this implicit intent, declare an <intent-filter> in your app's manifest file with a <category> of 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 Mindest-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

In 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.

Before Android 15, if an app requested direct or offload audio playback while another app was playing audio and the resource limits were reached, the app would fail to open a new AudioTrack.

Beginning with Android 15, when an app requests direct or offload playback and the resource limits are reached, the system invalidates any currently open AudioTrack objects which prevent fulfilling the new track request.

(Direct and offload audio tracks are typically opened for playback of compressed audio formats. Common use-cases for playing direct audio include streaming encoded audio over HDMI to a TV. Offload tracks are typically used to play compressed audio on a mobile device with hardware DSP acceleration.)

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 aktivierte Apps aktiviert

Ab Android 15 wurde die Entwickleroption für intelligente „Zurück“-Touch-Gesten entfernt. Systemanimationen wie das Zurückgehen zum Startbildschirm, das Wechseln zwischen Aufgaben und das Wechseln zwischen Aktivitäten werden jetzt für Apps angezeigt, die die vorhersagende Geste zum Zurückgehen entweder vollständig oder auf Aktivitätsebene aktiviert haben. Wenn Ihre App betroffen ist, gehen Sie so vor:

  • Prüfen Sie, ob Ihre App richtig migriert wurde, um die vorweggenommene Zurück-Geste zu verwenden.
  • Achten Sie darauf, dass Ihre Fragmentübergänge mit der vorausschauenden Navigation zurück funktionieren.
  • Verwenden Sie stattdessen Animator- und androidx-Übergänge.
  • Migrieren Sie von Backstacks weg, die FragmentManager nicht kennt. Verwenden Sie stattdessen Backstacks, die von FragmentManager oder der Navigationskomponente verwaltet werden.

Widgets werden deaktiviert, wenn der Nutzer eine App erzwungen beendet

If a user force-stops an app on a device running Android 15, the system temporarily disables all the app's widgets. The widgets are grayed out, and the user cannot interact with them. This is because beginning with Android 15, the system cancels all an app's pending intents when the app is force-stopped.

The system re-enables those widgets the next time the user launches the app.

For more information, see Changes to package stopped state.

Der Statusleisten-Chip für die Medienprojektion benachrichtigt Nutzer über die Bildschirmfreigabe, das Streaming und die Aufzeichnung

Screen projection exploits expose private user data such as financial information because users don't realize their device screen is being shared.

For apps running on devices with Android 15 QPR1 or higher, a status bar chip that is large and prominent alerts users to any in‑progress screen projection. Users can tap the chip to stop their screen from being shared, cast, or recorded. Also, screen projection automatically stops when the device screen is locked.

Status bar chip for screen sharing, casting, and recording.

Prüfen, ob Ihre App betroffen ist

Ihre App enthält standardmäßig den Statusleisten-Chip und die Bildschirmprojektion wird automatisch pausiert, wenn der Sperrbildschirm aktiviert wird.

Weitere Informationen zum Testen Ihrer App für diese Anwendungsfälle finden Sie unter Statusleiste – Chip und automatischer Stopp.

Einschränkungen für den Netzwerkzugriff im Hintergrund

In Android 15, apps that start a network request outside of a valid process lifecycle receive an exception. Typically, an UnknownHostException or other socket-related IOException. Network requests that happen outside of a valid lifecycle are usually due to apps unknowingly continuing a network request even after the app is no longer active.

To mitigate this exception, ensure your network requests are lifecycle aware and cancelled upon leaving a valid process lifecycle by using lifecycle aware components. If it is important that the network request should happen even when the user leaves the application, consider scheduling the network request using WorkManager or continue a user visible task using Foreground Service.

Einstellung

Mit jeder Version können bestimmte Android APIs veraltet werden oder müssen umgestaltet werden, um Entwicklern mehr Möglichkeiten 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.