Changements de comportement : toutes les applications

La plate-forme Android 15 apporte des modifications de comportement susceptibles d'affecter votre application. Les modifications de comportement suivantes s'appliquent à toutes les applications lorsqu'elles s'exécutent sur Android 15, peu importe la targetSdkVersion. Vous devez tester votre application, puis la modifier si nécessaire afin de prendre en charge ces modifications, le cas échéant.

Veillez également à consulter la liste des modifications de comportement qui n'affectent que les applications ciblant Android 15.

Fonctionnalité de base

Android 15 modifie ou étend diverses fonctionnalités de base du système Android.

Modifications apportées à l'état d'arrêt du package

L'état FLAG_STOPPED du package (que les utilisateurs peuvent activer dans les builds AOSP en appuyant de manière prolongée sur une icône d'application et en sélectionnant "Forcer l'arrêt") a toujours été de maintenir les applications dans cet état jusqu'à ce que l'utilisateur les en retire explicitement en les lançant directement ou en interagissant indirectement avec elles (via la Sharesheet ou un widget, en sélectionnant l'application comme fond d'écran animé, etc.). Dans Android 15, nous avons modifié le comportement du système pour qu'il corresponde à ce comportement prévu. Les applications ne doivent être supprimées de l'état "arrêté" que par une action directe ou indirecte de l'utilisateur.

Pour prendre en charge le comportement prévu, en plus des restrictions existantes, le système annule également tous les intents en attente lorsque l'application passe à l'état arrêté sur un appareil exécutant Android 15. Lorsque les actions de l'utilisateur retirent l'application de l'état d'arrêt, la diffusion ACTION_BOOT_COMPLETED est envoyée à l'application, ce qui lui permet de réenregistrer les intents en attente.

Vous pouvez appeler la nouvelle méthode ApplicationStartInfo.wasForceStopped() pour vérifier si l'application a été mise à l'arrêt.

Compatibilité avec les tailles de page de 16 ko

Android 过去仅支持 4 KB 内存页面大小, 优化了系统内存性能,以针对 Android 设备通常具备的功能。从 Android 15 开始,AOSP 支持 配置为使用 16 KB (16 KB) 页面大小的设备 设备)。如果您的应用使用任何 NDK 库,请直接使用 或者通过 SDK 间接创建,那么,您需要重新构建自己的应用 支持这些 16KB 设备。

随着设备制造商不断打造出 物理内存 (RAM),许多此类设备都会采用 16KB(以及 页面大小以优化设备的性能。正在添加 支持 16 KB 页面大小的设备,可使您的应用在这些设备上运行 并有助于您的应用从相关的广告效果中获益 改进。如果不重新编译,应用可能无法在 16KB 设备上运行 在未来的 Android 版本中正式推出。

为帮助您为应用添加支持,我们提供了有关如何检查 如果您的应用受到影响 重新构建您的应用(如果适用),以及如何在 Google Play 中 使用模拟器(包括 Android 15)的 16 KB 环境 系统映像)。

Avantages et gains de performances

Les appareils configurés avec une taille de page de 16 Ko utilisent un peu plus de mémoire en moyenne, mais bénéficient également de diverses améliorations des performances pour le système et les applications:

  • Temps de lancement des applications plus courts lorsque le système est soumis à une pression de mémoire: 3,16 % de moins en moyenne, avec des améliorations plus importantes (jusqu'à 30%) pour certaines applications que nous avons testées
  • Consommation d'énergie réduite au démarrage de l'application: réduction de 4,56% en moyenne
  • Lancement plus rapide de l'appareil photo: démarrage à chaud 4,48% plus rapide en moyenne et démarrage à froid 6,60% plus rapide en moyenne
  • Amélioration du temps de démarrage du système: 8% (environ 950 millisecondes) en moyenne

Ces améliorations sont basées sur nos premiers tests. Les résultats sur les appareils réels seront probablement différents. Nous fournirons une analyse supplémentaire des gains potentiels pour les applications à mesure que nous poursuivrons nos tests.

Vérifier si votre application est concernée

Si votre application utilise du code natif, vous devez la recompiler pour qu'elle soit compatible avec les appareils 16 ko. Si vous n'êtes pas sûr que votre application utilise du code natif, vous pouvez utiliser l'analyseur d'APK pour identifier la présence de code natif, puis vérifier l'alignement des segments ELF pour toutes les bibliothèques partagées que vous trouvez.

Si votre application n'utilise que du code écrit en langage de programmation Java ou Kotlin, y compris tous ses SDK et bibliothèques, elle est déjà compatible avec les appareils 16 ko. Toutefois, nous vous recommandons de tester votre application dans un environnement de 16 ko pour vérifier qu'il n'y a pas de régressions inattendues dans le comportement de l'application.

Modifications requises pour que certaines applications soient compatibles avec l'espace privé

私密空间是 Android 15 中推出的一项新功能,可让用户在设备上创建一个单独的空间,在额外的身份验证层保护下,防止敏感应用遭到窥探。由于私密空间中的应用具有受限的公开范围,因此某些类型的应用需要执行额外的步骤,才能查看和与用户私密空间中的应用互动。

所有应用

由于私密空间中的应用会保存在单独的用户资料中(类似于工作资料),因此应用不应假定其任何未位于主资料中的已安装副本都位于工作资料中。如果您的应用包含与工作资料应用相关的逻辑,并且做出了上述假设,则需要调整此逻辑。

医疗应用

当用户锁定私密空间时,私密空间中的所有应用都会停止运行,并且这些应用无法执行前台或后台活动,包括显示通知。此行为可能会严重影响安装在私密空间中的医疗应用的使用和功能。

私密空间设置体验会向用户发出警告,告知私密空间不适合需要执行关键前台或后台活动的应用,例如显示医疗应用发送的通知。不过,应用无法确定自己是否在私密空间中使用,因此无法在这种情况下向用户显示警告。

因此,如果您开发的是医疗应用,请检查此功能可能会对您的应用产生哪些影响,并采取适当的措施(例如告知用户不要在私密空间中安装您的应用),以免中断关键的应用功能。

启动器应用

如果您开发的是启动器应用,则必须执行以下操作,才能看到私密空间中的应用:

  1. 您的应用必须被指定为设备的默认启动器应用,即具有 ROLE_HOME 角色。
  2. 您的应用必须在应用的清单文件中声明 ACCESS_HIDDEN_PROFILES 普通权限。

声明 ACCESS_HIDDEN_PROFILES 权限的启动器应用必须处理以下私密空间用例:

  1. 您的应用必须为安装在私密空间中的应用提供单独的启动器容器。使用 getLauncherUserInfo() 方法确定要处理的用户个人资料类型。
  2. 用户必须能够隐藏和显示私密空间容器。
  3. 用户必须能够锁定和解锁私密空间容器。使用 requestQuietModeEnabled() 方法锁定(通过传递 true)或解锁(通过传递 false)私密空间。
  4. 在锁定状态下,私密空间容器中的任何应用都应不可见,也无法通过搜索等机制被发现。您的应用应为 ACTION_PROFILE_AVAILABLEACTION_PROFILE_UNAVAILABLE 广播注册接收器,并在私密空间容器的锁定或解锁状态发生变化时更新应用中的界面。这两种状态的广播都包含 EXTRA_USER,您的应用可以使用该常量来引用不公开个人资料的用户。

    您还可以使用 isQuietModeEnabled() 方法检查私密空间个人资料是否已锁定。

应用商店应用

私密空间包含一个“安装应用”按钮,用于启动隐式 intent 以将应用安装到用户的私密空间。为了让应用能够接收此隐式 intent,请在应用的清单文件中声明一个 <intent-filter>,并将 <category> 设为 CATEGORY_APP_MARKET

Suppression de la police d'emoji basée sur le format PNG

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.

Augmentation de la version minimale du SDK cible de 23 à 24

Android 15 s'appuie sur des modifications apportées à Android 14 et étend cette la sécurité. Sous Android 15, les applications avec un Impossible d'installer targetSdkVersion de version antérieure à 24. Demander aux applications de répondre aux niveaux d'API modernes permet d'assurer une meilleure sécurité et confidentialité.

Les logiciels malveillants ciblent souvent des niveaux d'API inférieurs afin de contourner les mesures de sécurité et de confidentialité de protection qui ont été introduites dans les versions ultérieures d'Android. Par exemple, certaines applications de logiciel malveillant utilisent une targetSdkVersion de 22 pour éviter d'être soumises au modèle d'autorisation d'exécution introduit en 2015 par Android 6.0 Marshmallow (niveau d'API 23). Avec cette modification d'Android 15, il est plus difficile pour les logiciels malveillants de contourner la sécurité et de confidentialité. Si vous tentez d'installer une application ciblant un niveau d'API inférieur, l'installation échouera et le message suivant apparaîtra dans Logcat :

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

Sur les appareils passant à Android 15, les applications dont la version de targetSdkVersion est inférieure à 24 restent installées.

Si vous devez tester une application ciblant un niveau d'API plus ancien, utilisez la commande ADB suivante :

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

Sécurité et confidentialité

Android 15 introduces robust measures to combat one-time passcode (OTP) fraud and to protect the user's sensitive content, focusing on hardening the Notification Listener Service and screenshare protections. Key enhancements include redacting OTPs from notifications accessible to untrusted apps, hiding notifications during screenshare, and securing app activities when OTPs are posted. These changes aim to keep the user's sensitive content safe from unauthorized actors.

Developers need to be aware of the following to ensure their apps are compatible with the changes in Android 15:

OTP Redaction

Android will stop untrusted apps that implement a NotificationListenerService from reading unredacted content from notifications where an OTP has been detected. Trusted apps such as companion device manager associations are exempt from these restrictions.

Screenshare Protection

  • Notification content is hidden during screen sharing sessions to preserve the user's privacy. If the app implements setPublicVersion(), Android shows the public version of the notification which serves as a replacement notification in insecure contexts. Otherwise, the notification content is redacted without any further context.
  • Sensitive content like password input is hidden from remote viewers to prevent revealing the user's sensitive information.
  • Activities from apps that post notifications during screenshare where an OTP has been detected will be hidden. App content is hidden from the remote viewer when launched.
  • Beyond Android's automatic identification of sensitive fields, developers can manually mark parts of their app as sensitive using setContentSensitivity, which is hidden from remote viewers during screenshare.
  • Developers can choose to toggle the Disable screen share protections option under Developer Options to be exempted from the screenshare protections for demo or testing purposes. The default system screen recorder is exempted from these changes, since the recordings remain on-device.

Appareil photo et médias

Android 15 apporte les modifications suivantes au comportement de l'appareil photo et des contenus multimédias pour toutes les applications.

La lecture audio directe et hors connexion invalide les pistes audio directes ou hors connexion précédemment ouvertes lorsque les limites de ressources sont atteintes

Avant Android 15, si une application demandait la lecture audio directe ou de déchargement alors qu'une autre application diffusait de l'audio et que les limites de ressources étaient atteintes, l'application ne parvenait pas à ouvrir un nouveau AudioTrack.

À partir d'Android 15, lorsqu'une application demande la lecture directe ou le transfert et que les limites de ressources sont atteintes, le système invalide tous les objets AudioTrack actuellement ouverts qui empêchent de répondre à la nouvelle requête de piste.

(Les pistes audio directes et de déchargement sont généralement ouvertes pour la lecture de formats audio compressés. Les cas d'utilisation courants de la lecture audio directe incluent le streaming d'audio encodé via HDMI vers un téléviseur. Les pistes de déchargement sont généralement utilisées pour lire de l'audio compressé sur un appareil mobile avec accélération matérielle du DSP.)

Expérience utilisateur et interface utilisateur du système

Android 15 inclut des modifications visant à créer une expérience utilisateur plus cohérente et intuitive.

Animations pour prévisualiser le retour en arrière activées pour les applications qui ont activé cette fonctionnalité

À partir d'Android 15, l'option pour les développeurs permettant d'activer les animations pour la prévisualisation du Retour a été supprimée. Les animations système telles que le retour à l'accueil, le passage d'une tâche à l'autre et le passage d'une activité à l'autre apparaissent désormais pour les applications qui ont activé le geste Retour prédictif entièrement ou au niveau d'une activité. Si votre application est concernée, procédez comme suit:

  • Assurez-vous que votre application a été correctement migrée pour utiliser le geste de retour prédictif.
  • Assurez-vous que vos transitions de fragment fonctionnent avec la navigation avec prévisualisation du Retour.
  • Abandonnez les animations et les transitions de framework, et utilisez plutôt les transitions d'animateur et d'androidx.
  • Migrez loin des piles "Retour" que FragmentManager ne connaît pas. Utilisez plutôt des piles "Retour" gérées par FragmentManager ou par le composant Navigation.

Widgets désactivés lorsque l'utilisateur arrête de forcer une application

Si un utilisateur arrête de forcer une application sur un appareil exécutant Android 15, le système désactive temporairement tous les widgets de l'application. Les widgets sont grisés et l'utilisateur ne peut pas interagir avec eux. En effet, à partir d'Android 15, le système annule tous les intents en attente d'une application lorsqu'elle est arrêtée de force.

Le système réactive ces widgets la prochaine fois que l'utilisateur lance l'application.

Pour en savoir plus, consultez la section Modifications apportées à l'état "Arrêté" du package.

Chip de la barre d'état de la projection multimédia pour avertir les utilisateurs du partage d'écran, du cast et de l'enregistrement

Les failles de projection d'écran exposent des données utilisateur privées telles que des informations financières, car les utilisateurs ne se rendent pas compte que l'écran de leur appareil est partagé.

Pour les applications exécutées sur des appareils équipés d'Android 15 QPR1 ou version ultérieure, un chip de barre d'état de grande taille et bien visible avertit les utilisateurs de toute projection d'écran en cours. Les utilisateurs peuvent appuyer sur le chip pour empêcher le partage, la diffusion ou l'enregistrement de leur écran. De plus, la projection d'écran s'arrête automatiquement lorsque l'écran de l'appareil est verrouillé.

Chip de la barre d'état pour le partage d'écran, la diffusion et l'enregistrement.

检查您的应用是否受到影响

默认情况下,您的应用会包含状态栏条状标签,并会在锁定屏幕激活时自动暂停屏幕投影。

如需详细了解如何针对这些用例测试应用,请参阅状态栏条状标签和自动停止

Abandons

À chaque version, des API Android spécifiques peuvent devenir obsolètes ou nécessiter un refactoring pour offrir une meilleure expérience aux développeurs ou prendre en charge de nouvelles fonctionnalités de la plate-forme. Dans ce cas, nous abandonnons officiellement les API obsolètes et orientons les développeurs vers d'autres API à utiliser à la place.

La mise à l'écart signifie que nous avons mis fin à la prise en charge officielle des API, mais qu'elles resteront disponibles pour les développeurs. Pour en savoir plus sur les abandons notables de cette version d'Android, consultez la page des abandons.