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“

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

Prüfen, ob Ihre App betroffen ist

Wenn Ihre App nativen Code verwendet, sollten Sie sie neu erstellen, sodass sie 16-KB-Geräte unterstützt. Wenn Sie sich nicht sicher sind, ob Ihre App nativen Code verwendet, können Sie mithilfe des APK Analyzer ermitteln, ob nativer Code vorhanden ist.

Wenn Ihre App nur Code verwendet, der in der Programmiersprache Java oder in Kotlin geschrieben ist (einschließlich aller Bibliotheken oder SDKs), unterstützt sie bereits 16-KB-Geräte. Trotzdem empfehlen wir Ihnen, Ihre Anwendung in einer 16 KB-Umgebung zu testen, um sicherzustellen, dass es keine unerwarteten Regressionen beim Verhalten der Anwendung 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:

  1. Ihre App muss als Standard-Launcher-App für das Gerät festgelegt sein, mit der Rolle ROLE_HOME ist.
  2. 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:

  1. 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.
  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 Methode requestQuietModeEnabled() zum Sperren (durch über true) oder entsperren (durch Übergabe von false) den privaten Bereich.
  4. 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 und ACTION_PROFILE_UNAVAILABLE überträgt und aktualisiert die Benutzeroberfläche in Ihrer App, wenn der private Bereich gesperrt oder entsperrt ist Containeränderungen. Beide Broadcasts umfassen EXTRA_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

基于 PNG 的旧版表情符号字体文件 (NotoColorEmojiLegacy.ttf) 已 只留下基于矢量的文件从 Android 13 (API) 开始 级别 33),系统表情符号渲染程序使用的表情符号字体文件已从 PNG 文件转换为矢量文件。系统保留了 Android 13 和 14 中的旧版字体文件。 具有自己的字体渲染程序的应用可以继续使用旧版字体文件 直到能够升级为止

要查看您的应用是否会受到影响,请在应用的代码中搜索对 NotoColorEmojiLegacy.ttf 文件。

您可以选择以多种方式调整您的应用:

  • 使用平台 API 进行文本渲染。您可以将文本渲染为基于位图的 Canvas,并在必要时使用它获取原始图像。
  • 向您的应用添加 COLRv1 字体支持。FreeType 开源库 在版本 2.13.0 中支持 COLRv1,并且 。
  • 万不得已时,可以将旧版表情符号字体文件打包 (NotoColorEmoji.ttf) 复制到您的 APK 中, 但在这种情况下,您的应用将缺少最新的表情符号更新。对于 请参阅 Noto 表情符号 GitHub 项目 页面

Minimale 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

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.

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

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.