Verhaltensänderungen: alle Apps

Die Android 15-Plattform umfasst 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 dann um sie ggf. zu unterstützen.

Sehen Sie sich auch die Liste der Verhaltensänderungen an, die sich nur auf Apps auswirken. für Android 15.

Hauptfunktion

Mit Android 15 werden verschiedene Hauptfunktionen des Android-Systems modifiziert oder erweitert.

Änderungen am Status „Paket gestoppt“

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 are updating 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

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, Android 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.

Devices with larger page sizes can have improved performance for memory-intensive workloads. 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. We plan to make 16 KB page compatibility required for app uploads to the Google Play store next year.

As device manufacturers continue to build devices with larger amounts of physical memory (RAM), many of these devices will likely be configured with 16 KB (and eventually greater) page sizes to optimize the device's performance. Adding support for 16 KB devices enables your app to run on these devices and helps your app benefit from the associated performance improvements.

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

Benefits and performance gains

Geräte, die mit einer Seitengröße von 16 KB konfiguriert wurden, benötigen im Durchschnitt etwas mehr Arbeitsspeicher, erzielen aber auch verschiedene Leistungsverbesserungen für das System und die Anwendungen:

  • Kürzere App-Startzeiten bei Speicherauslastung – im Durchschnitt um 3,16 % niedriger, mit größeren Verbesserungen (bis zu 30%) für einige getestete Apps
  • Geringerer Stromverbrauch beim Start der App: durchschnittlich 4,56% weniger
  • Schnellerer Start der Kamera: 4,48% schnellere Heißstarts im Durchschnitt und 6,60% schnellere Kaltstarts im Durchschnitt
  • Verbesserte Systemstartzeit: durchschnittlich um 1,5% (ungefähr 0,8 Sekunden) verbessert

Diese Verbesserungen basieren auf unseren ersten Tests und die Ergebnisse auf tatsächlichen Geräten werden wahrscheinlich abweichen. Im Verlauf der Tests werden wir zusätzliche Analysen möglicher Vorteile für Apps bereitstellen.

Check if your app is impacted

If your app uses any native code, then you should rebuild your app with support for 16 KB devices. If you are unsure if your app uses native code, you can use the APK Analyzer to identify whether any native code is present.

If your app only uses code written in the Java programming language or in Kotlin, including all libraries or SDKs, then your app already supports 16 KB devices. Nevertheless, we recommend that you test your app in a 16 KB environment to verify that there are no unexpected regressions in app behavior.

Erforderliche Änderungen für einige Apps zur Unterstützung des privaten Bereichs

Der private Bereich ist eine neue Funktion in Android 15, mit der Nutzer einen separaten Bereich auf ihrem Gerät erstellen können, in dem sie mithilfe einer zusätzlichen Authentifizierungsebene sensible Apps vor neugierigen Blicken bewahren können. Da Anwendungen im privaten Bereich nur eingeschränkt sichtbar sind, müssen einige Arten von Anwendungen zusätzliche Schritte ausführen, um Anwendungen im privaten Bereich eines Nutzers sehen und mit ihnen interagieren zu können.

Alle Apps

Da Apps im privaten Bereich in einem separaten Nutzerprofil gespeichert werden, ähnlich wie bei Arbeitsprofilen, sollten Apps nicht davon ausgehen, dass installierte Kopien der App, die sich nicht im Hauptprofil befinden, im Arbeitsprofil zu finden sind. Wenn Ihre Anwendung eine Logik für die Arbeitsprofilanwendungen hat, von denen diese Annahme ausgeht, müssen Sie diese Logik anpassen.

Launcher-Apps

Wenn du eine Launcher-App entwickelst, musst du Folgendes tun, damit Apps im privaten Bereich sichtbar sind:

  1. Deine App muss als Standard-Launcher-App für das Gerät zugewiesen sein, also die Rolle ROLE_HOME haben.
  2. Für deine App muss die normale Berechtigung ACCESS_HIDDEN_PROFILES in der Manifestdatei deiner App deklariert werden.

Launcher-Apps, die die Berechtigung ACCESS_HIDDEN_PROFILES deklarieren, müssen die folgenden Anwendungsfälle für den privaten Bereich verarbeiten:

  1. Deine App muss einen separaten Launcher-Container für im privaten Bereich installierte Apps haben. Verwenden Sie die Methode getLauncherUserInfo(), um festzustellen, welche Art von Nutzerprofil verarbeitet wird.
  2. Der Nutzer muss den Container für den privaten Bereich ein- und ausblenden können.
  3. Der Nutzer muss den Container für den privaten Bereich sperren und entsperren können. Verwenden Sie die Methode requestQuietModeEnabled(), um den privaten Bereich zu sperren (durch Übergabe von true) oder zu entsperren (durch Übergabe von false).
  4. Wenn die Sperre aktiviert ist, sollten Anwendungen im Container des privaten Bereichs nicht über Mechanismen wie die Suche sichtbar oder auffindbar sein. Ihre Anwendung sollte für die ACTION_PROFILE_AVAILABLE- und ACTION_PROFILE_UNAVAILABLE-Broadcasts einen Empfänger registrieren und die UI in Ihrer App aktualisieren, wenn sich der gesperrte oder entsperrte Status des Containers für den privaten Bereich ändert. Beide Broadcasts enthalten EXTRA_USER, mit dem Ihre App auf den Nutzer des privaten Profils verweisen kann.

    Sie können auch mit der Methode isQuietModeEnabled() prüfen, ob das Profil im privaten Bereich gesperrt ist.

App Store-Apps

Der private Bereich enthält die Schaltfläche „Apps installieren“, die implizit startet, um Apps im privaten Bereich des Nutzers zu installieren. Damit deine App diesen impliziten Intent erhält, musst du in der Manifestdatei deiner App ein <intent-filter> mit einem <category> von CATEGORY_APP_MARKET deklarieren.

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.

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

Minimale SDK-Zielversion wurde 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

Kamera und Medien

Android 15 nimmt folgende Änderungen am Kamera- und Medienverhalten für alle vor Apps.

Bei der direkten und ausgelagerten Audiowiedergabe werden jetzt die zuvor geöffneten direkten und ausgelagerten Audiotracks ungültig, wenn Ressourcenlimits erreicht sind.

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

Nutzererfahrung und System-UI

Android 15 umfasst einige Änderungen, die eine einheitlichere, eine intuitive User Experience bieten.

Vorausschauende Rückanimationen für Apps aktiviert, die diese Option 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 von FragmentManager oder der Navigationskomponente verwaltet werden.

Widgets sind deaktiviert, wenn der Nutzer das Beenden einer App erzwingt

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

Einstellung von Produkten und Funktionen

Mit jedem Release können bestimmte Android-APIs veraltet sein oder müssen refaktoriert, um die Entwicklungsumgebung zu verbessern oder eine neue Plattform zu unterstützen Funktionen. In diesen Fällen stellen wir die veralteten APIs offiziell ein und Entwickler zu alternativen APIs weiterleiten, die sie stattdessen verwenden können

Das bedeutet, dass wir den offiziellen Support für die APIs eingestellt haben. weiterhin für Entwickler verfügbar. Um mehr über wichtige Informationen zu Einstellungen in dieser Android-Version finden Sie auf der Seite zu den Einstellungen.