Die Android 15-Plattform enthält Verhaltensänderungen, die sich auf deine App auswirken können.
Die folgenden Verhaltensänderungen gelten für alle Apps , wenn sie unter Android 15 ausgeführt werden,
unabhängig von targetSdkVersion. Du solltest deine App testen und sie dann gegebenenfalls so ändern, dass sie diese Änderungen unterstützt.
Sieh dir auch die Liste der Verhaltensänderungen an, die sich nur auf Apps auswirken, die auf Android 15 ausgerichtet sind.
Hauptfunktion
In Android 15 werden verschiedene Kernfunktionen des Android-Systems geändert oder erweitert.
Änderungen am Status „Paket beendet“
Der Status „Paket FLAG_STOPPED“ (den Nutzer in AOSP-Builds durch langes Drücken auf ein App-Symbol und Auswahl von „Zwangsweise beenden“ aktivieren können) soll Apps in diesem Status halten, bis der Nutzer die App explizit daraus entfernt, indem er sie direkt startet oder indirekt mit ihr interagiert (z. B. über das Freigabe-Menü oder ein Widget oder indem er die App als Live-Hintergrund auswählt). In Android 15 haben wir das Verhalten des Systems an dieses beabsichtigte Verhalten angepasst. Apps sollten nur durch eine direkte oder indirekte Nutzeraktion aus dem Status „Angehalten“ entfernt werden.
Um das beabsichtigte Verhalten zu unterstützen, werden zusätzlich zu den bestehenden Einschränkungen alle ausstehenden Intents abgebrochen, wenn die App auf einem Gerät mit Android 15 den Status „Angehalten“ einnimmt. Wenn die App durch die Aktionen des Nutzers aus dem angehaltenen Status entfernt wird, wird die ACTION_BOOT_COMPLETED-Broadcast an die App gesendet. So können ausstehende Intents neu registriert werden.
Sie können die neue Methode ApplicationStartInfo.wasForceStopped() aufrufen, um zu prüfen, ob die App in den Status „Beendet“ versetzt wurde.
Unterstützung für Seitengrößen von 16 KB
Historically, Android has only supported 4 KB memory page sizes, which has optimized system memory performance for the average amount of total memory that Android devices have typically had. Beginning with Android 15, AOSP supports devices that are configured to use a page size of 16 KB (16 KB devices). If your app uses any NDK libraries, either directly or indirectly through an SDK, then you will need to rebuild your app for it to work on these 16 KB devices.
As device manufacturers continue to build devices with larger amounts of physical memory (RAM), many of these devices will adopt 16 KB (and eventually greater) page sizes to optimize the device's performance. Adding support for 16 KB page size devices enables your app to run on these devices and helps your app benefit from the associated performance improvements. Without recompiling, apps won't work on 16 KB devices in future Android releases.
To help you add support for your app, we've provided guidance on how to check if your app is impacted, how to rebuild your app (if applicable), and how to test your app in a 16 KB environment using emulators (including Android 15 system images for the Android Emulator).
Vorteile und Leistungssteigerungen
Devices configured with 16 KB page sizes use slightly more memory on average, but also gain various performance improvements for both the system and apps:
- Lower app launch times while the system is under memory pressure: 3.16% lower on average, with more significant improvements (up to 30%) for some apps that we tested
- Reduced power draw during app launch: 4.56% reduction on average
- Faster camera launch: 4.48% faster hot starts on average, and 6.60% faster cold starts on average
- Improved system boot time: improved by 8% (approximately 950 milliseconds) on average
These improvements are based on our initial testing, and results on actual devices will likely differ. We'll provide additional analysis of potential gains for apps as we continue our testing.
Prüfen, ob Ihre App betroffen ist
Wenn Ihre App nativen Code verwendet, sollten Sie Ihre App neu erstellen, um Geräte mit 16‑KB-Speicherseiten zu unterstützen. Wenn Sie sich nicht sicher sind, ob Ihre App nativen Code verwendet, können Sie mit dem APK Analyzer prüfen, ob nativer Code vorhanden ist, und dann die Ausrichtung von ELF-Segmenten für alle gefundenen gemeinsam genutzten Bibliotheken prüfen. Android Studio bietet auch Funktionen, mit denen Sie Ausrichtungsprobleme automatisch erkennen können.
Wenn Ihre App nur Code verwendet, der in der Programmiersprache Java oder in Kotlin geschrieben wurde, 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 zu prüfen, ob es unerwartete Regressionen im App-Verhalten gibt.
Erforderliche Änderungen für einige Apps zur Unterstützung des Vertraulichen Profils
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:
- Your app must be assigned as the default launcher app for the device—that
is, possessing the
ROLE_HOMErole. - Your app must declare the
ACCESS_HIDDEN_PROFILESnormal permission in your app's manifest file.
Launcher apps that declare the ACCESS_HIDDEN_PROFILES permission must handle
the following private space use cases:
- 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. - The user must be able to hide and show the private space container.
- The user must be able to lock and unlock the private space container. Use
the
requestQuietModeEnabled()method to lock (by passingtrue) or unlock (by passingfalse) the private space. 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_AVAILABLEandACTION_PROFILE_UNAVAILABLEbroadcasts and update the UI in your app when the locked or unlocked state of the private space container changes. Both of these broadcasts includeEXTRA_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
Canvasand 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.
Mindestziel-SDK-Version von 23 auf 24 erhöht
Android 15 builds on the
the changes that were made in Android 14 and extends this
security further. In Android 15, apps with a
targetSdkVersion lower than 24 can't be installed.
Requiring apps to meet modern API levels helps to ensure better security and
privacy.
Malware often targets lower API levels in order to bypass security and privacy
protections that have been introduced in higher Android versions. For example,
some malware apps use a targetSdkVersion of 22 to avoid being subjected to the
runtime permission model introduced in 2015 by Android 6.0 Marshmallow (API
level 23). This Android 15 change makes it harder for malware to avoid security
and privacy improvements. Attempting to install an app targeting a lower API
level results in an installation failure, with a message like the following one
appearing in Logcat:
INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7
On devices upgrading to Android 15, any apps with a targetSdkVersion lower
than 24 remain installed.
If you need to test an app targeting an older API level, use the following ADB command:
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
setContentSensitivityals 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 direkter und ausgelagerter Audiowiedergabe werden zuvor geöffnete direkte oder ausgelagerte Audiotracks ungültig, wenn Ressourcenlimits erreicht werden
Vor Android 15 konnte eine App, die eine direkte oder ausgelagerte Audiowiedergabe anforderte, während eine andere App Audio wiedergab und die Ressourcenlimits erreicht wurden, keine neue AudioTrack öffnen.
Ab Android 15 werden alle derzeit geöffneten AudioTrack-Objekte ungültig, wenn eine App die direkte oder Offload-Wiedergabe anfordert und die Ressourcenlimits erreicht werden. Dadurch wird verhindert, dass die neue Titelanfrage erfüllt wird.
(Direkte und Offload-Audiotracks werden in der Regel für die Wiedergabe komprimierter Audioformate geöffnet. Gängige Anwendungsfälle für die direkte Audiowiedergabe sind das Streaming von codiertem Audio über HDMI an einen Fernseher. Offload-Tracks werden in der Regel verwendet, um komprimierte Audioinhalte auf einem Mobilgerät mit Hardware-DSP-Beschleunigung abzuspielen.)
Nutzererfahrung und System-UI
Android 15 enthält einige Änderungen, die eine einheitlichere und intuitivere Nutzererfahrung schaffen sollen.
Animationen für intelligente „Zurück“-Touchgeste für Apps aktiviert, die sich dafür angemeldet haben
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
FragmentManagernicht kennt. Verwenden Sie stattdessen Backstacks, die vonFragmentManageroder der Navigationskomponente verwaltet werden.
Widgets deaktiviert, wenn ein Nutzer eine App erzwingt
Wenn ein Nutzer eine App auf einem Gerät mit Android 15 erzwungen beendet, 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 vom System abgebrochen werden, wenn die App erzwungen beendet 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 „Angehalten“ für Pakete.
Chip in der Statusleiste für die Projektion von Medieninhalten benachrichtigt Nutzer über Bildschirmfreigabe, Streaming und Aufzeichnung
Bei Ausnutzung von Bildschirmprojektion werden personenbezogene Nutzerdaten wie Finanzinformationen offengelegt, da Nutzer nicht wissen, dass ihr Gerätebildschirm geteilt wird.
Bei Apps, die auf Geräten mit Android 15 QPR1 oder höher ausgeführt werden, werden Nutzer über einen großen und gut sichtbaren Chip in der Statusleiste über eine laufende Bildschirmprojektion informiert. Nutzer können auf den Chip tippen, um zu verhindern, dass ihr Bildschirm geteilt, gestreamt oder aufgezeichnet wird. Außerdem wird die Bildschirmprojektion automatisch beendet, wenn das Display des Geräts gesperrt wird.
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 Zugriff auf das Hintergrundnetzwerk
In Android 15 erhalten Apps, die eine Netzwerkanfrage außerhalb eines gültigen Prozesslebenszyklus starten, eine Ausnahme. In der Regel ist dies ein UnknownHostException oder ein anderer socketbezogener IOException. Netzwerkanfragen, die außerhalb eines gültigen Lebenszyklus erfolgen, sind in der Regel darauf zurückzuführen, dass Apps eine Netzwerkanfrage unwissentlich fortsetzen, auch wenn die App nicht mehr aktiv ist.
Um diese Ausnahme zu vermeiden, sollten Sie dafür sorgen, dass Ihre Netzwerkanfragen sitzungsorientiert sind und abgebrochen werden, wenn sie einen gültigen Prozesslebenszyklus verlassen. Verwenden Sie dazu sitzungsorientierte Komponenten. Wenn es wichtig ist, dass die Netzwerkanfrage auch dann erfolgt, wenn der Nutzer die Anwendung verlässt, können Sie die Netzwerkanfrage mit WorkManager planen oder eine für den Nutzer sichtbare Aufgabe mit einem Dienst im Vordergrund fortsetzen.
Verworfene Produkte/Funktionen
Mit jeder Version können bestimmte Android-APIs veraltet sein oder umgestaltet werden müssen, um eine bessere Entwicklererfahrung zu bieten oder neue Plattformfunktionen zu unterstützen. In diesen Fällen stellen wir die veralteten APIs offiziell ein und verweisen Entwickler auf alternative APIs, die stattdessen verwendet werden können.
Die Einstellung bedeutet, dass wir den offiziellen Support für die APIs eingestellt haben. Sie bleiben aber weiterhin für Entwickler verfügbar. Weitere Informationen zu wichtigen Einstellungen in dieser Version von Android findest du auf der Seite zu Einstellungen.