La plate-forme Android 15 inclut des modifications de comportement susceptibles d'affecter votre application.
Les modifications de comportement suivantes s'appliquent à toutes les applications lorsqu'elles s'exécutent sous Android 15 :
quel que soit targetSdkVersion
. Vous devez tester votre application, puis la modifier
afin de les prendre en charge correctement, le cas échéant.
Veillez également à consulter la liste des modifications de comportement qui ne concernent 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'objectif de l'état FLAG_STOPPED
du package (que les utilisateurs peuvent lancer dans les builds AOSP en appuyant de manière prolongée sur l'icône d'une application et en sélectionnant "Forcer l'arrêt") a toujours été de conserver les applications dans cet état jusqu'à ce que l'utilisateur la supprime explicitement en la lançant directement ou en interagissant indirectement avec l'application (via la Sharesheet ou un widget, en sélectionnant l'application comme fond d'écran animé, etc.). Dans Android 15, nous mettons à jour le comportement du système pour l'aligner sur ce comportement attendu. Les applications ne doivent être supprimées qu'à l'aide d'une action directe ou indirecte de l'utilisateur.
Pour prendre en charge le comportement souhaité, en plus des restrictions existantes, le système annule également tous les intents en attente lorsque l'application passe à l'état "Arrêtée" sur un appareil équipé d'Android 15. Lorsque les actions de l'utilisateur suppriment l'application de l'état d'arrêt, la diffusion ACTION_BOOT_COMPLETED
est transmise à 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é arrêtée.
Compatibilité avec les tailles de page de 16 Ko
Auparavant, Android n'acceptait que des pages de 4 Ko de mémoire, ce qui optimisée des performances de la mémoire système pour la quantité moyenne de mémoire totale les appareils Android ont généralement eu. À partir d'Android 15, AOSP prend en charge appareils configurés pour utiliser une taille de page de 16 Ko appareils). Si votre application utilise des bibliothèques du NDK, directement ou indirectement via un SDK, vous devez recompiler votre application pour qu'elle fonctionnent sur ces appareils de 16 Ko.
Alors que les fabricants d’appareils continuent à construire des appareils avec de plus grandes quantités mémoire physique (RAM), un grand nombre de ces appareils adopteront un débit de 16 Ko (et et éventuellement plus) pour optimiser les performances de l'appareil. Ajout... la compatibilité avec les appareils dont la taille de page est de 16 Ko permet à votre application de s'exécuter sur ces appareils et aide votre application à bénéficier des performances associées et d'améliorations. Sans recompilation, les applications risquent de ne pas fonctionner sur les appareils de 16 Ko. lorsqu'ils seront mis en production dans les prochaines versions d'Android.
Pour vous aider à proposer la prise en charge de votre application, nous vous fournissons des conseils sur la façon de vérifier si votre application est concernée, comment recompilez votre application (le cas échéant) et comment la tester dans un environnement de 16 Ko utilisant des émulateurs (y compris Android 15) ; images système pour Android Emulator).
Avantages et gains de performances
Les appareils configurés avec des tailles 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:
- Diminution du temps de lancement des applications lorsque la mémoire système est forte: 3,16 % de moins en moyenne, avec des améliorations plus importantes (jusqu'à 30%) pour certaines applications que nous avons testées
- Réduction de la consommation d'énergie lors du lancement de l'application: réduction de 4,56% en moyenne
- Lancement plus rapide des caméras: 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: amélioration de 1,5% (environ 0,8 seconde) en moyenne
Ces améliorations sont basées sur nos tests initiaux et 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 de 16 Ko. Si vous ne savez pas si votre application utilise du code natif, vous pouvez utiliser l'analyseur d'APK pour déterminer la présence de code natif.
Si votre application n'utilise que du code écrit en langage de programmation Java ou Kotlin, y compris toutes les bibliothèques ou tous les SDK, elle est déjà compatible avec les appareils de 16 Ko. Néanmoins, 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 son comportement.
Modifications requises pour que certaines applis prennent en charge l'espace privé
L'espace privé est une nouvelle fonctionnalité d'Android 15 qui permet aux utilisateurs créer un espace séparé sur leur appareil où ils peuvent garder les applications sensibles à l'écart. des regards indiscrets, sous une couche d'authentification supplémentaire. Parce que les applications l'espace privé ont une visibilité limitée, certains types d'applications doivent des étapes supplémentaires pour pouvoir voir les applications et interagir avec elles dans les applications l'espace de stockage.
Toutes les applications
Comme les applis de l'espace privé sont conservées dans un profil utilisateur distinct, aux profils professionnels, les applications ne doivent pas supposer qu'aucune des copies de son application qui ne figurent pas dans le profil principal sont dans le profil professionnel. Si votre application a une logique liée aux applications du profil professionnel qui font cette hypothèse : vous devrez ajuster cette logique.
Applis - Médecine
Lorsqu'un utilisateur verrouille l'espace privé, toutes les applications qu'il contient sont arrêtées. et ces applications ne peuvent pas effectuer d'activités au premier plan ou en arrière-plan, y compris affichant les notifications. Ce comportement peut avoir un impact critique sur l'utilisation et fonction des applications médicales installées dans l'espace privé.
L'expérience de configuration de l'espace privé avertit les utilisateurs que l'espace privé n'est pas convient aux applications qui doivent exécuter des opérations critiques au premier plan ou en arrière-plan activités, comme l'affichage de notifications d'applications médicales. Toutefois, les applications ne peuvent pas déterminer si elles sont utilisées ou non dans l'espace privé, il ne peut donc pas afficher d'avertissement à l'utilisateur pour ce cas.
Pour toutes ces raisons, si vous développez une application médicale, examinez impacter votre application et prendre les mesures appropriées, par exemple en informant vos utilisateurs de ne pas Installez votre application dans l'espace privé, pour éviter de perturber l'application critique. des fonctionnalités.
Lanceur d'applications
Si vous développez une application de lancement, vous devez effectuer les opérations suivantes avant que les applications dans le l'espace privé sera visible:
- Votre application doit être définie comme lanceur d'applications par défaut de l'appareil,
disposant du rôle
ROLE_HOME
. - Votre application doit déclarer l'
ACCESS_HIDDEN_PROFILES
autorisation normale dans le fichier manifeste de votre application.
Les applis de lancement qui déclarent l'autorisation ACCESS_HIDDEN_PROFILES
doivent gérer
les cas d'utilisation d'espace privé suivants:
- Votre application doit disposer d'un conteneur de lanceur distinct pour les applications installées dans
votre espace privé. Utilisez la méthode
getLauncherUserInfo()
pour déterminer quel type de profil utilisateur est géré. - L'utilisateur doit pouvoir masquer et afficher le conteneur de l'espace privé.
- L'utilisateur doit pouvoir verrouiller et déverrouiller le conteneur de l'espace privé. Utilisez
la méthode
requestQuietModeEnabled()
pour verrouiller en transmettanttrue
) ou déverrouillez (en transmettantfalse
) l'espace privé. Lorsque l'application est verrouillée, aucune appli du conteneur de l'espace privé ne doit être visible ni visibles par le biais de mécanismes tels que la recherche. Votre application doit enregistrer un "receiver"
ACTION_PROFILE_AVAILABLE
etACTION_PROFILE_UNAVAILABLE
diffuse et mettez à jour UI dans votre application lorsque l'état verrouillé ou déverrouillé de l'espace privé est activé les modifications du conteneur. Ces deux diffusions incluentEXTRA_USER
, que votre application peut utiliser pour faire référence aux profil privé.Vous pouvez également utiliser la méthode
isQuietModeEnabled()
pour vérifier si le profil de l'espace privé est verrouillé ou non.
Applications de plate-forme de téléchargement d'applications
L'espace privé inclut un bouton "Installer des applis" qui lance une couche implicite
l'intention d'installer des applications
dans l'espace privé de l'utilisateur. Pour que votre application
recevez cet intent implicite, déclarez un objet <intent-filter>
.
dans le fichier manifeste de votre application avec une valeur <category>
de
CATEGORY_APP_MARKET
Police d'emoji basée sur PNG supprimée
L'ancien fichier de polices des emoji au format PNG (NotoColorEmojiLegacy.ttf
) a été
et ne contient que le fichier basé sur les vecteurs. À partir d'Android 13 (API
niveau 33), le fichier de police des emoji utilisé par le moteur de rendu du système est passé de
fichier PNG en fichier vectoriel. Le système a conservé
l'ancien fichier de polices sous Android 13 et 14 pour des raisons de compatibilité.
les applications disposant de leurs propres moteurs de rendu de polices
peuvent continuer à utiliser l'ancien fichier de polices
jusqu'à ce qu'ils puissent effectuer la mise à niveau.
Pour vérifier si votre application est concernée, recherchez dans le code de votre application des références aux
NotoColorEmojiLegacy.ttf
.
Vous pouvez choisir d'adapter votre application de plusieurs façons:
- Utiliser les API de la plate-forme pour le rendu du texte Vous pouvez effectuer le rendu du texte sur un bitmap
Canvas
et utilisez-le pour obtenir une image brute si nécessaire. - Ajoutez la prise en charge des polices COLRv1 à votre application. Bibliothèque Open Source FreeType est compatible avec COLRv1 dans la version 2.13.0 et plus élevée.
- En dernier recours, vous pouvez regrouper l'ancien fichier de police des emoji
(
NotoColorEmoji.ttf
) dans votre APK. Toutefois, dans ce cas, votre application ne bénéficiera pas des dernières mises à jour des emoji. Pour En savoir plus, consultez le projet GitHub Noto Emoji .
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.
Exiger des applications qu'elles répondent aux exigences de niveaux d'API modernes permet de renforcer la 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é. Tentative d'installation d'une application ciblant une API plus ancienne
entraîne un échec de l'installation, avec un message semblable à celui-ci
apparaissant 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 est inférieure à targetSdkVersion
que 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
Appareil photo et contenus multimédias
Android 15 apporte les modifications suivantes au comportement de l'appareil photo et des contenus multimédias pour tous applications.
La lecture directe et le déchargement de la piste audio invalident désormais les pistes audio précédemment ouvertes ou les déchargent lorsque les limites de ressources sont atteintes
Avant Android 15, si une application demandait la lecture directe ou la déchargeait alors qu'une autre application lisait du contenu 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 de déchargement et que les limites de ressources sont atteintes, le système invalide tous les objets AudioTrack
actuellement ouverts, ce qui empêche de traiter la nouvelle requête de canal.
(Les pistes audio directes et de déchargement sont généralement ouvertes pour la lecture de formats audio compressés. Le streaming audio encodé via HDMI sur un téléviseur est un cas d'utilisation courant. Les pistes de déchargement sont généralement utilisées pour lire du contenu audio compressé sur un appareil mobile avec accélération matérielle DSP.)
Expérience utilisateur et UI du système
Android 15 inclut certaines modifications visant à créer un environnement plus cohérent, une expérience utilisateur intuitive.
Animations pour la prévisualisation du Retour activées pour les applis qui l'ont activée
À partir d'Android 15, l'option pour les développeurs pour les animations de prévisualisation du Retour a été supprimée. Les animations système telles que le retour à l'écran d'accueil, le multitâche et l'activité multi-activité s'affichent désormais pour les applications qui ont activé la prévisualisation du geste Retour soit entièrement, soit au niveau de l'activité. Si votre application est concernée, procédez comme suit:
- Assurez-vous que votre application a bien été migrée pour utiliser la prévisualisation du geste Retour.
- Assurez-vous que vos transitions de fragment fonctionnent avec la navigation avec prévisualisation du Retour.
- Abandonnez les transitions d'animation et de framework, et utilisez plutôt les transitions d'animateur et d'androidx.
- Éloignez-vous des piles "Retour" que
FragmentManager
n'a pas connaissance. Utilisez plutôt des piles "Retour" gérées parFragmentManager
ou par le composant Navigation.
Les widgets sont désactivés lorsque l'utilisateur force l'arrêt d'une application.
Si un utilisateur force l'arrêt d'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 lorsque celle-ci est arrêtée de force.
Le système les réactivera la prochaine fois que l'utilisateur lancera l'application.
Pour en savoir plus, consultez Modifications de l'état d'arrêt d'un package.
Abandons
À chaque version, des API Android spécifiques peuvent devenir obsolètes ou nécessiter Refactorisation pour offrir une meilleure expérience aux développeurs ou prendre en charge une nouvelle plate-forme des fonctionnalités. Dans ce cas, nous abandonnons officiellement les API obsolètes et diriger les développeurs vers d'autres API à utiliser à la place.
L'abandon signifie que nous ne prenons plus en charge officiellement les API, mais qu'elles restent disponibles pour les développeurs. Pour en savoir plus sur les concernant les abandons de cette version d'Android, consultez la page relative aux abandons.