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“

软件包 FLAG_STOPPED 状态(用户可以通过长按应用图标并选择“强行停止”来参与 AOSP build)一直是为了让应用保持此状态,直到用户通过直接启动应用或间接与应用互动(通过 Sharesheet 或 widget、选择应用作为动态壁纸等)将应用从此状态明确移除。在 Android 15 中,我们将更新系统的行为,以符合这一预期行为。只能通过用户直接或间接操作将应用从停止状态中移除。

为了支持预期行为,除了现有限制之外,当应用在搭载 Android 15 的设备上进入停止状态时,系统还会取消所有待处理 intent。当用户的操作将应用从停止状态中移除时,系统会向应用传递 ACTION_BOOT_COMPLETED 广播,让用户有机会重新注册任何待处理的 intent。

您可以调用新的 ApplicationStartInfo.wasForceStopped() 方法来确认应用是否已置于停止状态。

Unterstützung für Seitengrößen von 16 KB

一直以来,Android 仅支持 4 KB 的内存页面大小,针对 Android 设备通常拥有的平均总内存量,系统内存性能进行了优化。从 Android 15 开始,Android 支持配置为使用 16 KB 页面大小的设备(即 16 KB 设备)。

随着设备制造商不断打造具有更大物理内存 (RAM) 的设备,这些设备中的许多可能会配置 16 KB(最终更大)的页面大小,以优化设备的性能。添加对 16 KB 设备的支持可让您的应用在这些设备上运行,并帮助您的应用从相关性能改进中受益。为了帮助您解决此问题,我们提供了一些指南,帮助您了解如何检查您的应用是否受到影响、如何重新构建应用(如果适用),以及如何同时使用模拟器和实体设备在 16 KB 的环境中测试应用

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

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 baut auf den Änderungen in Android 14 auf und erweitert diese Sicherheit noch. Unter Android 15 können Apps mit einem targetSdkVersion unter 24 nicht installiert werden. Wenn Anwendungen die modernen API-Levels erfüllen müssen, werden Sicherheit und Datenschutz verbessert.

Malware zielt häufig auf niedrigere API-Levels ab, um die mit höheren Android-Versionen eingeführten Sicherheits- und Datenschutzfunktionen zu umgehen. Bei einigen Malware-Apps wird beispielsweise für targetSdkVersion der Wert 22 verwendet, damit sie nicht dem 2015 von Android 6.0 Marshmallow (API-Level 23) eingeführten Laufzeitberechtigungsmodell unterliegen. Durch diese Änderung bei Android 15 wird es Malware schwerer, Verbesserungen bei der Sicherheit und beim Datenschutz zu vermeiden. Der Versuch, eine Anwendung zu installieren, die auf eine niedrigere API-Ebene ausgerichtet ist, führt zu einem Installationsfehler und in Logcat wird eine Meldung wie die folgende angezeigt:

INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7

Auf Geräten, die auf Android 15 aktualisiert werden, bleiben alle Apps mit einer targetSdkVersion unter 24 installiert.

Wenn Sie eine App testen müssen, die auf ein älteres API-Level ausgerichtet ist, verwenden Sie den folgenden ADB-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.