La société Google a publié la version de la plateforme mobile open source Android 14. Les codes sources associés à cette nouvelle version sont hébergés dans le référentiel Git du projet (branche android-14.0.0_r1). Des mises à jour du firmware ont été préparées pour les appareils de la série Pixel. Des mises à jour pour les smartphones fabriqués par Samsung Galaxy, iQOO, Nothing, OnePlus, Oppo, Realme, Sharp, Sony, Tecno, vivo et Xiaomi sont également prévues. De plus, des images système génériques (GSI) ont été créées, adaptées à différents appareils basés sur les architectures ARM64 et x86_64.
Les principales nouveautés :
- La plateforme intègre désormais le stockage Health Connect, qui était précédemment proposé sous la forme d'un package séparé via Google Play. Health Connect permet le stockage centralisé des données provenant de bracelets de fitness et d'autres dispositifs liés à la santé de l'utilisateur, et organise l'accès partagé de différentes applications aux données de santé. L'accès aux paramètres de Health Connect sera désormais accessible via le configurateur natif de la plateforme, par exemple, via les paramètres de confidentialité, il sera possible de gérer les données de santé auxquelles certaines applications peuvent accéder. De plus, Health Connect a ajouté la prise en charge de l'enregistrement des informations sur le parcours effectué pendant l'entraînement (l'utilisateur définit une durée pendant laquelle la liste des points de passage sera sauvegardée). Le parcours peut être visualisé sur une carte et, si souhaité, transmis à d'autres applications pour traitement, après confirmation explicite de l'opération par l'utilisateur.

- Les moyens de confirmation d'accès aux informations de localisation ont été étendus. Un nouveau volet d'information a été ajouté au dialogue de demande de confirmation d'accès à la localisation, indiquant quand une application transmet des données de localisation (accès refusé, autoriser une seule fois et autoriser à chaque exécution de l'application), ainsi que des détails sur la manière d'obtenir des informations supplémentaires concernant l'accès aux données transmises.

- Une notification périodique (une fois par mois) a été mise en place pour avertir des changements dans les méthodes de transmission des données à des tiers par les applications ayant accès à la localisation (par exemple, une notification apparaît lorsque l'application commence à utiliser des données de localisation pour afficher des publicités).

- Lors de l'utilisation d'applications, une indication de retour plus visible a été mise en place pour faciliter la compréhension de l'utilisation du geste de retour d'écran.

- Dans le mécanisme Sharesheet, utilisé pour envoyer des données (comme des images ou des liens) en dehors de l'application ou à un autre utilisateur, il est désormais possible d'ajouter des actions personnalisées. Par exemple, il est possible de définir sa propre liste de gestionnaires ChooserAction, montrant les applications et les utilisateurs vers lesquels l'envoi est possible. De plus, le champ des signaux utilisés pour classer les cibles pour l'envoi direct des données a été élargi.

- Il est désormais possible de donner des droits d'accès partiels, limités uniquement aux photos et vidéos sélectionnées par l'utilisateur (READ_MEDIA_VISUAL_USER_SELECTED, les fichiers auxquels l'accès est donné sont choisis par l'utilisateur via l'interface de sélection de photos lors de l'apparition de la boîte de dialogue de demande de droits). Une fois que l'application est mise en arrière-plan ou que le programme est fermé, les droits accordés par l'utilisateur sont automatiquement révoqués. Dans la boîte de dialogue de confirmation des droits d'accès des applications aux fichiers multimédias, il est désormais possible de donner accès uniquement aux photos ou vidéos sélectionnées.

- Une section de configuration pour redéfinir les préférences régionales a été ajoutée, comme les unités de mesure de température, le premier jour de la semaine et le système de numérotation. Par exemple, un Européen vivant aux États-Unis peut configurer l'affichage de la température en Celsius au lieu de Fahrenheit et considérer le lundi comme le premier jour de la semaine au lieu du dimanche.

- Les possibilités de mise à l'échelle des polices ont été étendues, le niveau maximal de mise à l'échelle des polices passant de 130 % à 200 %, et afin d'éviter que le texte ne semble trop grand lors d'un grand agrandissement, un changement non linéaire du niveau de mise à l'échelle est désormais appliqué automatiquement (le texte déjà grand n'est pas agrandi autant que le petit), ce qui permettra d'atteindre une lisibilité optimale pour les personnes ayant une vision réduite sans risquer de distorsion dans la mise en page de l'interface.

- Le support de l'enregistrement vidéo à haute plage dynamique (HDR) introduit dans la précédente version a été élargi avec la capacité d'obtenir des informations supplémentaires de la caméra, permettant de sauvegarder des images au format « Ultra HDR », dans lequel 10 bits par canal sont utilisés pour le codage des couleurs. Le format Ultra HDR est complètement compatible avec JPEG, ce qui permet aux applications de travailler avec des images HDR sans modifications, et, si nécessaire, de les afficher avec une plage dynamique standard. La sortie en mode HDR est automatiquement assurée par la plateforme si le support HDR est activé dans le manifeste de l'application ou lors de l'appel de Window.setColorMode. Pour le rendu séparé d'Ultra HDR à l'aide d'OpenGL ou Vulkan, la classe Gainmap peut être utilisée.

- Les types d'applications autorisées à afficher des notifications plein écran lorsqu'un écran est verrouillé sont désormais limités. De telles notifications visent à attirer l'attention sur des informations nécessitant une réaction immédiate, comme un appel entrant ou un réveil, ainsi les autorisations pour afficher ces notifications seront désormais réservées aux applications de téléphonie et de signaux d'alerte.
- La gestion des animations signalant le passage entre différents écrans (onglets) dans l'application lors d'un geste de glissement a été améliorée. De nouveaux composants pour l'animation des transitions d'écrans inférieurs et latéraux, ainsi que pour l'appel à la recherche, ont été ajoutés. Une API a été intégrée pour créer des effets de transition personnalisés dans l'application.
- Le jeu d'extensions pour la caméra (Camera Extensions) a été mis à jour, offrant la possibilité d'utiliser des algorithmes longs nécessitant des calculs intensifs pour le traitement d'images, par exemple, pour améliorer la qualité des prises de vue en faible luminosité. Des fonctions pour prédire les délais de traitement de l'image, obtenir des informations sur la progression du traitement et obtenir un brouillon de l'image avant que l'image finale soit préparée ont été ajoutées. Un mode d'aperçu optimisé et économe en énergie a été mis en œuvre via SurfaceView. Pendant l'utilisation des extensions, le support du toucher pour la mise au point et le zoom a été assuré.
- Le support de l'utilisation des capacités de mise à l'échelle et de recadrage intégrées à la caméra pour les images RAW transmises a été ajouté.
- Pour les écouteurs filaires connectés via USB, une possibilité d'appliquer des formats audio sans perte de qualité (lossless) a été ajoutée. Dans l'API, une classe AudioMixerAttributes a été introduite, permettant d'envoyer directement le son vers le périphérique, sans mixage, ajustement du volume ou effets de traitement.
- Dans l'API graphique, une classe Mesh a été implémentée, permettant de créer ses propres variantes de maillage polygonal avec des shaders de vertex et de fragment écrits en AGSL.
- La possibilité d'accélération matérielle du rendu dans un tampon a été ajoutée, réalisée via la classe HardwareBufferRenderer.
- La classe Path, qui permet de créer des graphiques vectoriels à partir de contours géométriques composites, a été enrichie d'un support pour l'interpolation entre des contours de structure similaire afin de créer un effet de morphing et d'utiliser un itérateur PathIterator pour parcourir séquentiellement tous les segments du contour.
- Les capacités de liaison des paramètres linguistiques spécifiques à différentes applications ont été élargies. Il est désormais possible de définir une liste de langues qui s'afficheront dans le configurateur Android lors de la sélection d'une langue pour une application spécifique.
- Les domaines dans lesquels le système affiche des informations liées à la confidentialité, définies par le développeur dans le formulaire Play Console, ont été étendus, telles que la politique de partage des données avec des tiers. Par exemple, ces informations sont désormais affichées dans la boîte de dialogue de demande d'autorisation.
- Dans les applications utilisant des gestionnaires fonctionnant en arrière-plan, il est maintenant obligatoire de spécifier le type de service en arrière-plan. Pendant l'exécution, le système vérifie la conformité entre le type de service spécifié, les autorisations demandées et l'API utilisée. Par exemple, si l'application a spécifié le type de service en arrière-plan FOREGROUND_SERVICE_TYPE_LOCATION, cela implique que les autorisations ACCESS_COARSE_LOCATION ou ACCESS_FINE_LOCATION peuvent être demandées.
- Des modifications ont été apportées pour améliorer la sécurité : L'envoi de requêtes d'intention vers certains composants internes de la plateforme par les applications est désormais interdit. Le code chargé dynamiquement doit maintenant être marqué avec un attribut d'accès en mode lecture seule. Dans les fonctions ZipFile(String) et ZipInputStream.getNextEntry(), le traitement des archives zip dont les chemins commencent par le caractère « / » ou contiennent la séquence « .. » est interdit. L'exécution de tâches à partir de gestionnaires en arrière-plan a été limitée, et les restrictions dans l'appel des interfaces de programmation non fournies dans le SDK ont été mises à jour.
- Lors de la connexion d'un appareil via USB à un ordinateur de bureau, en plus des modes d'interaction précédemment disponibles tels que le transfert de fichiers, la charge, le partage Internet, etc., il est désormais possible d'utiliser le smartphone comme webcam (mode UVC, USB Video Class). Par défaut, cette fonctionnalité est désactivée, mais elle peut être activée avec un accès root.
- L'amélioration du fonctionnement de la plateforme sur les tablettes et les appareils à écran pliable se poursuit. Des bibliothèques permettant de prédire les événements liés au mouvement du pointeur et assurant de faibles latences lors de l'utilisation de stylets ont été fournies. Des modèles d'interface pour grands écrans ont été fournis, prenant en compte des applications telles que les réseaux sociaux, les communications, le contenu multimédia, la lecture et les achats.
- Une autorisation distincte a été ajoutée pour permettre aux applications de lancer des actions lorsque l'application est en arrière-plan. L'activation en arrière-plan est limitée afin de ne pas distraire l'utilisateur lorsqu'il utilise une application courante. Les applications actives ont plus de possibilités de contrôle sur l'activation des actions par d'autres applications avec lesquelles elles interagissent.
- L'optimisation du système de gestion de la mémoire a été réalisée pour un allocation plus rationnelle des ressources aux applications s'exécutant en arrière-plan. Quelques secondes après le passage de l'application à un état mis en cache, le travail en arrière-plan est limité à l'utilisation des API qui gèrent le cycle de vie de l'application, telles que l'API des services au premier plan, JobScheduler et WorkManager.
- Les notifications équipées du drapeau FLAG_ONGOING_EVENT peuvent désormais être rejetées lorsqu'elles sont affichées sur un appareil avec l'écran déverrouillé. Si l'appareil est en mode verrouillage d'écran, de telles notifications resteront non réjectables. Les notifications essentielles au fonctionnement du système resteront également non réjectables.
- L'API PackageInstaller a ajouté de nouvelles méthodes : requestUserPreapproval(), permettant au catalogue d'applications de retarder le téléchargement des paquets APK jusqu'à ce que l'utilisateur confirme l'installation ; setRequestUpdateOwnership(), permettant de lier des opérations de mise à jour futures à l'installateur ; setDontKillApp(), permettant de définir des options supplémentaires pour l'application pendant l'exécution du programme. Dans l'API InstallConstraints, les installateurs ont la possibilité d'activer l'installation des mises à jour de l'application à des moments où l'application n'est pas utilisée.
- Des efforts ont été poursuivis pour améliorer les performances de la plateforme sur les tablettes et les appareils à écran pliable. Les recommandations pour le développement d'applications pour les appareils à grands écrans ont été mises à jour et des modèles d'interface pour grands écrans ont été ajoutés, prenant en compte des usages tels que les réseaux sociaux, la communication, le contenu multimédia, la lecture et les achats. Un pré-lancement du SDK Cross device a été proposé avec des outils pour le développement d'applications fonctionnant correctement sur différents types d'appareils (smartphones, tablettes, téléviseurs intelligents, etc.) et différents facteurs de forme.
- L'optimisation de la coordination de l'exécution des tâches de fond gourmandes en ressources, comme le téléchargement de gros fichiers lorsqu'une connexion Wi-Fi est disponible, a été effectuée. Des modifications ont été apportées à l'API de lancement des services prioritaires (Foreground Service) et à la planification des tâches (JobScheduler), y compris une nouvelle fonctionnalité pour les tâches utilisateur relatives au transfert de données. Des exigences ont été introduites pour le type de services prioritaires déclenchés (travail avec la caméra, synchronisation des données, lecture de médias, suivi de l'emplacement, accès au microphone, etc.). Les conditions d'activation du téléchargement des données ont été simplifiées, par exemple, pour ne télécharger que lorsque l'accès par Wi-Fi est disponible.
- Le système interne de diffusion de messages aux applications (broadcast system) a été optimisé pour réduire la consommation d'énergie et améliorer la réactivité. La réception des flux de messages enregistrés par les applications a été améliorée — les messages peuvent être mis en file d'attente, agrégés (par exemple, une série de messages BATTERY_CHANGED sera regroupée en un seul) et livrés uniquement après que l'application a quitté l'état mis en cache.
- La limite maximale du nombre d'applications mises en cache a été augmentée, ce qui a permis de réduire le nombre d'applications lancées en mode « froid » (c'est-à-dire non mises en cache en mémoire et lancées plus lentement). Pour les appareils avec 8 Go de RAM, après les changements de limites, le nombre de lancements « froids » d'applications a diminué de 20 %, et de 30 % pour ceux avec 12 Go.
- L'utilisation dans les applications de la fonction d'exécution d'opérations à une heure précise (exact alarms) nécessite désormais l'obtention d'une autorisation distincte SCHEDULE_EXACT_ALARM, car l'application de cette fonctionnalité peut avoir un impact négatif sur l'autonomie de la batterie et entraîner une consommation accrue de ressources (pour les tâches exécutées selon un calendrier, il est recommandé d'utiliser l'activation à un moment approximatif). Les applications avec une mise en œuvre de calendrier et d'horloge utilisant une activation à une heure précise doivent obtenir l'autorisation USE_EXACT_ALARM lors de l'installation. Les publications dans le catalogue Google Play des applications avec l'autorisation USE_EXACT_ALARM ne sont autorisées que pour les programmes mettant en œuvre un réveil, un minuteur et un calendrier avec des notifications d'événements.
- Il est désormais possible d'indiquer les paramètres de langue liés à des applications individuelles. Le développeur de l'application peut maintenant modifier les paramètres localeConfig via l'appel de LocaleManager.setOverrideLocaleConfig pour déterminer la liste des langues affichées pour l'application dans l'interface de réglage d'Android.
- L'API Grammatical Inflection a été ajoutée pour faciliter l'ajout de traductions des éléments de l'interface prenant en compte les langues avec un système de genres.
- Pour éviter l'interception des requêtes intent par des applications malveillantes, la nouvelle version interdit l'envoi d'intents sans spécification explicite du package ou du composant interne.
- La sécurité du chargement dynamique de code (DCL, Dynamic Code Loading) a été renforcée — pour éviter l'injection de code malveillant dans des fichiers exécutables chargés dynamiquement, ces fichiers doivent désormais avoir des permissions permettant uniquement la lecture.
- L'installation d'applications pour lesquelles la version SDK est inférieure à 23 est interdite, ce qui permettra de bloquer la contournement des restrictions d'autorisations via la liaison à d'anciens API (la version API 22 est interdite car la version 23 (Android 6.0) a introduit un nouveau modèle de gestion des accès, permettant de demander des accès aux ressources système à la volée). Les applications précédemment installées utilisant d'anciens API continueront de fonctionner après la mise à jour d'Android.
- Une API Credential Manager a été proposée, permettant d'organiser dans les applications une connexion utilisant les identifiants de fournisseurs d'authentification externes. La prise en charge de la technologie Passkeys a été réalisée, permettant à l'utilisateur de s'authentifier sans mots de passe en utilisant des identifiants biométriques, comme les empreintes digitales ou la reconnaissance faciale. L'interface de sélection du compte a été améliorée.
- Dans Android Runtime (ART), la prise en charge de OpenJDK 17 a été mise en œuvre. Les bibliothèques Java de base de la plateforme et les outils de développement d'applications ont été mis à jour vers OpenJDK 17. La prise en charge des fonctionnalités de langage et des classes Java disponibles dans OpenJDK 17 a été ajoutée, par exemple, les classes de type record, les chaînes multilignes et le motif matching dans l'opérateur « instanceof ».
- Des méthodes de compression plus avancées ont été mises en œuvre dans Android Runtime, permettant de réduire la taille des fichiers en moyenne de 9,3 % sans nuire aux performances.
- La méthode de mise à jour des certificats des autorités de certification (CA) a été modifiée. Les certificats système ne seront plus liés au firmware, mais seront livrés dans un package séparé, mis à jour via Google Play. Cette approche simplifiera le maintien de certificats à jour et la suppression de certificats compromettants des autorités de certification, tout en empêchant les fabricants d'appareils de manipuler la liste des certificats racines et rendant le processus de mise à jour indépendant des mises à jour du firmware. D'autre part, la nouvelle méthode de livraison n'autorisera pas l'utilisateur à modifier les certificats système, même s'il a un accès root et contrôle complètement le firmware.
Source : opennet.ru









