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 mit Ausrichtung auf Android 15 auswirken.

Hauptfunktion

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

Änderungen am Status „Angehalten“ des Pakets

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

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

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 Mindestversion der SDK-Zielversion wurde von 23 auf 24 erhöht

Android 15 基于 在 Android 14 中进行的更改,并扩展了 安全性。在 Android 15 中, 无法安装低于 24 的 targetSdkVersion。 要求应用符合现代 API 级别有助于确保更好的安全性和 保护隐私。

恶意软件通常会以较低的 API 级别为目标平台,以绕过安全和隐私 更高的 Android 版本中引入的保护机制。例如,有些恶意软件应用使用 targetSdkVersion 22,以避免受到 Android 6.0 Marshmallow(API 级别 23)在 2015 年引入的运行时权限模型的约束。这项 Android 15 变更使恶意软件更难以规避安全和隐私权方面的改进限制。尝试安装以较低 API 级别为目标平台的应用将导致安装失败,并且 Logcat 中会显示如下所示的消息:

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

在升级到 Android 15 的设备上,targetSdkVersion 级别较低的任何应用 安装在 Google Play 上

如果您需要测试以旧版 API 级别为目标平台的应用,请使用以下 ADB 命令:

adb install --bypass-low-target-sdk-block FILENAME.apk

Sicherheit und Datenschutz

Android 15 引入了强大的措施来防范动态密码 (OTP) 欺诈并保护用户的敏感内容,重点是增强通知监听器服务和屏幕共享保护措施。主要增强功能包括从可供不可信应用访问的通知中隐去 OTP、在屏幕共享期间隐藏通知,以及在发布 OTP 时保护应用 activity。这些变更旨在保护用户的敏感内容,使其免受未经授权的操作者的侵害。

开发者需要注意以下事项,以确保其应用与 Android 15 中的变更兼容:

动态密码隐去

Android 会阻止实现 NotificationListenerService 的不受信任应用读取已检测到 OTP 的通知中的未隐去的内容。配套设备管理器关联等受信任应用不受这些限制。

屏幕共享保护

  • 在屏幕共享会话期间,系统会隐藏通知内容,以保护用户的隐私。如果应用实现了 setPublicVersion(),Android 会显示通知的公开版本,该版本在不安全情境中用作替换通知。否则,系统会隐去通知内容,不提供任何其他背景信息。
  • 系统会向远程观看者隐藏密码输入等敏感内容,以防止泄露用户的敏感信息。
  • 如果在屏幕共享期间检测到动态密码,系统会隐藏在该时间段内发布通知的应用的活动。应用内容在启动时会向远程查看器隐藏。
  • 除了 Android 自动识别敏感字段之外,开发者还可以使用 setContentSensitivity 手动将应用的部分标记为敏感,在屏幕共享期间,这些敏感字段会对远程观看者隐藏。
  • 开发者可以选择切换开发者选项下的停用屏幕共享防护选项,以便出于演示或测试目的豁免屏幕共享防护。默认的系统屏幕录制工具不受这些更改的影响,因为录制内容会保留在设备上。

Kamera und Medien

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

在 Android 15 之前,如果某个应用在另一个应用正在播放音频时请求直接播放或分流音频播放,并且已达到资源限制,此应用将无法打开新的 AudioTrack

从 Android 15 开始,当应用请求直接或分流播放并且达到资源限制时,系统会使当前打开的所有 AudioTrack 对象失效,从而阻止执行新的轨道请求。

(直接和分流音轨通常会打开,以播放压缩的音频格式。播放直接音频的常见用例包括通过 HDMI 将编码音频流式传输到电视。分流轨道通常用于在具有硬件 DSP 加速的移动设备上播放压缩音频。)

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 Apps aktiviert, die die Funktion 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 werden deaktiviert, wenn der Nutzer eine App erzwungen beendet

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

Statusleiste-Chip für die Medienprojektion benachrichtigt Nutzer über Bildschirmfreigabe, Streaming und Aufzeichnung

Screen projection exploits expose private user data such as financial information because users don't realize their device screen is being shared. Android has until now shown screen cast and screen record icons on the status bar, but the icons are small and often overlooked. Also, stopping screen sharing or recording is cumbersome because controls are in Quick Settings.

Android 15 introduces a new status bar chip that is large and prominent, which should alert users to any in-progress screen projection. Users can tap the chip to stop their screen from being shared, cast, or recorded.

To provide an intuitive user experience, screen projection now automatically stops when the device screen is locked.

Benefits and performance gains

The new media projection status bar chip enhances the user experience as follows:

  • Alerts users to in-progress screen sharing, casting, or recording
  • Enable users to terminate screen projection by tapping the chip

Automatic suspension of screen projection when the device screen is locked ensures user privacy.

Check if your app is impacted

By default, your app includes the new status bar chip and automatically suspends screen projection when the lock screen activates. Test your app by implementing the onStop() method of the MediaProjection.Callback. Verify that your app responds appropriately when the screen projection stops as a result of the user tapping the status bar chip or when the lock screen activates.

Einstellung von Produkten und Funktionen

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