Publication de la plateforme mobile Android 17

La société Google a publié la version de la plateforme mobile open source Android 17. Les codes sources associés à cette nouvelle version sont disponibles dans le dépôt Git du projet (branche android-17.0.0_r1). Des builds de firmware ont été préparés pour les appareils Pixel 6/6a/6 Pro, Pixel 7/7a/7 Pro, Pixel 8/8a/8 Pro, Pixel 9/9a/9 Pro/9 Pro XL/9 Pro Fold, Pixel 10/10 Pro/10 Pro XL/10 Pro Fold, Pixel Fold et Pixel Tablet. Des builds préliminaires de firmware sont disponibles pour les appareils HONOR, iQOO, Lenovo, OnePlus, OPPO, realme, Sharp, vivo et Xiaomi. Dans le cadre de la création, des builds universels GSI (Generic System Images) ont été formés, adaptés à différents appareils basés sur les architectures ARM64 et x86_64.

Parmi les changements (1, 2, 3) :

  • Un nouveau mode de travail en multi-fenêtres a été ajouté — « Bubbles », permettant d'exécuter n'importe quelle application dans des fenêtres flottantes, ressemblant à des notifications pour l'envoi de messages (« bulles »), mais non liées à une API spécialisée. L'ouverture d'une application dans une fenêtre flottante se fait en maintenant la pression sur l'icône de l'application. Sur les grands écrans, les icônes des fenêtres flottantes sont affichées dans une zone distincte de la barre des tâches. Ces fenêtres peuvent être regroupées, déplacées et ancrées à l'écran.

  • Le développement de la plateforme pour les dispositifs à grands écrans, tels que les tablettes, les ordinateurs portables, les systèmes de bureau et les smartphones à écrans pliables, a été poursuivi. Les options précédemment en vigueur pour désactiver le nouveau comportement sur les appareils avec des écrans de plus de 600 pixels conditionnels de large (dp), lié à l'ignorance de certaines API pour la gestion du changement de taille et d'orientation d'écran (screenOrientation, resizeableActivity, [min|max]AspectRatio), ainsi qu’à la disposition adaptative des applications dans des fenêtres pouvant être redimensionnées et déplacées à l'écran, ont été supprimées.

  • Une API système EyeDropper API a été ajoutée, permettant à l'application de récupérer des informations sur la couleur de n'importe quel pixel à l'écran sans avoir besoin de permissions pour capturer l'écran. La sécurité est assurée par le fait que l'utilisateur choisit lui-même la zone pour déterminer la couleur via une interface contrôlée par la plateforme avec une « pipette », hors du contrôle de l'application, c'est-à-dire que l'application ne peut pas demander d'informations sur un pixel spécifique et reproduire pixel par pixel le contenu de l'écran.

  • Une interface système de sélection de contacts à partir du carnet d'adresses a été ajoutée, à laquelle on peut accéder en obtenant l'autorisation ACTION_PICK_CONTACTS. Cette interface permet de se passer de l'autorisation READ_CONTACTS, qui permet de lire toutes les données de contact. Lors de l'appel de la nouvelle interface, l'utilisateur décide quelle information spécifique du carnet d'adresses transmettre à l'application, avec la possibilité de choisir uniquement certains champs.

  • Ajout de l'API PhotoPickerUiCustomizationParams pour modifier l'interface de sélection des photos, ce qui permet de l'ajuster au style de l'application appelante. Par exemple, il est possible de changer le rapport d'aspect des vignettes de photos de 1:1 (carré) à 9:16 (portrait).

  • Ajout de l'autorisation USE_LOCATION_BUTTON, permettant d'intégrer dans l'interface de l'application un bouton système qui permet d'accéder à des données de localisation précises. Le bouton est dessiné par le système et, lorsqu'il est pressé par l'utilisateur, ouvre l'accès à la localisation uniquement pour la durée de la session en cours.

  • Ajout d'un paramètre permettant de cacher les noms des applications sous leurs icônes.
  • La conception de la barre d'outils pour l'enregistrement de screencasts a été modifiée.

  • Ajout de la prise en charge des réactions d'écran (Screen Reactions), combinant l'enregistrement vidéo avec la caméra frontale et la création de screencasts pour superposer ses commentaires sur les actions à l'écran.

  • Ajout d'un mode pour les jeux sur des appareils avec des écrans pliables, où une moitié de l'écran pliable est utilisée pour afficher le gameplay et l'autre pour un contrôleur virtuel.

  • Ajout de l'API Handoff, permettant de transférer l'état de l'application à un autre appareil Android à proximité (par exemple, une tablette) et de continuer à travailler là-bas.

  • Mise en œuvre de fenêtres ancrées interactives, qui, contrairement aux fenêtres traditionnelles en mode « image dans l'image » (Picture-in-Picture), restent interactives lorsqu'elles sont ancrées au-dessus d'autres applications en mode bureau.
  • Ajout de deux nouvelles API : API UWB DL-TDOA — détermination de la position d'un appareil à l'intérieur d'un bâtiment à l'aide du Wi-Fi pour la navigation intérieure; API Proximity Detection pour détecter les appareils à proximité via Wi-Fi.
  • Prise en charge ajoutée du format vidéo VVC (Versatile Video Coding), également connu sous le nom de norme de compression vidéo H.266, développée conjointement par les groupes de travail MPEG (ISO/IEC JTC 1) et VCEG (ITU-T), avec la participation d'entreprises telles qu'Apple, Ericsson, Intel, Huawei, Microsoft, Qualcomm et Sony. H.266 remplace H.265 (HEVC) et offre une efficacité élevée pour la transmission et le stockage de toutes les résolutions d'écran (de SD et HD à 4K et 8K), prend en charge la vidéo à plage dynamique étendue (HDR, High Dynamic Range) et la vidéo panoramique en mode 360 degrés.
  • Possibilité d'enregistrer des vidéos avec un niveau de qualité constant ajoutée. Le mode est configuré dans l'objet MediaRecorder, à l'aide de la méthode setVideoEncodingQuality(), permettant de fixer le niveau de qualité indépendamment du débit binaire.
  • Ajout de la prise en charge du format d'image RAW14, utilisé dans les caméras numériques professionnelles et permettant de stocker 15 bits par canal de couleur.
  • Ajout de la prise en charge du format vidéo HDR Eclipsa.
  • Ajout d'un encodeur logiciel pour le format audio HE-AAC (High-Efficiency Advanced Audio Coding), prenant en charge à la fois des débits binaires faibles et élevés.
  • Ajout d'une nouvelle autorisation ACCESS_LOCAL_NETWORK pour limiter l'accès des applications au réseau local. La présence de cette autorisation permet aux applications de détecter et de se connecter à des appareils sur le réseau local, par exemple, à des dispositifs de maison intelligente et à des systèmes multimédias. Cette autorisation a été ajoutée pour bloquer le scan des ressources du réseau local par des applications malveillantes, par exemple, pour l'identification cachée de l'environnement de l'utilisateur.
  • Protection renforcée contre l'interception des mots de passe à usage unique (OTP) et des codes de confirmation envoyés par SMS. L'accès direct à ces messages est maintenant ouvert à la plupart des applications seulement trois heures après leur réception. Dans l'application par défaut de lecture des SMS, ces messages apparaissent immédiatement.
  • Protection contre les appels frauduleux de faux représentants de banques mise en œuvre. La plateforme peut interagir avec les applications bancaires installées pour confirmer que l'appel est initié par la banque. Les banques peuvent également identifier les numéros de téléphone sur lesquels seuls les appels entrants sont autorisés.
  • Ajout de la possibilité de donner aux applications un accès temporaire aux données de localisation exacte, valable uniquement pendant la session en cours de travail avec le programme.
  • Le mécanisme de protection de chargement dynamique de code (DCL, Dynamic Code Loading) a été élargi pour s'appliquer aux bibliothèques natives chargées via la méthode System.load(), et non seulement
    aux fichiers au format DEX et JAR. DCL permet d'éviter l'injection de code malveillant dans les fichiers exécutables chargés dynamiquement, en attribuant des droits d'accès en lecture seule à ces fichiers.
  • Le mécanisme de transparence des certificats est activé par défaut, maintenant un journal public de tous les certificats délivrés et révoqués.
  • La possibilité de signer des paquets APK avec une signature numérique basée sur un algorithme hybride, combinant un algorithme classique avec un algorithme ML-DSA, résistant à la cryptanalyse sur des ordinateurs quantiques, a été fournie.
  • Pour les applications fonctionnant en arrière-plan, l'accès à l'API pour la lecture audio, la connexion à des dispositifs audio et le contrôle du volume est limité. Seules les applications actives, avec lesquelles l'utilisateur interagit actuellement, peuvent commencer une lecture et modifier le volume.
  • Ajout du support de chiffrement hybride basé sur le mécanisme HPKE (Hybrid Public Key Encryption, RFC 9180), combinant la simplicité de transmission de clé en chiffrement à clé publique avec la haute performance du chiffrement symétrique (les données sont chiffrées avec une clé symétrique rapide, tandis que la clé elle-même est chiffrée avec un algorithme asymétrique lent).
  • Pour la saisie de mots de passe et de codes PIN à l'aide d'un clavier physique, l'affichage du dernier caractère tapé est désactivé par défaut lors de la saisie.
  • Pour faciliter la prise en charge des touchpads dans les jeux, le traitement des événements de souris et de touchpad a été unifié : par défaut, les événements de touchpad liés au déplacement du pointeur et aux gestes de défilement sont désormais convertis au format avec des coordonnées relatives, comme pour la souris. L'accès aux coordonnées absolues est fourni par une indication explicite du mode POINTER_CAPTURE_MODE_ABSOLUTE.
  • Dans l'objet ChooserSession, la méthode getInitialRestingBounds() a été ajoutée, permettant de connaître la position finale et la taille de la boîte de dialogue de sélection (Chooser) après la fin de l'animation et le chargement des données.
  • Ajout des méthodes getStreamingAppMaxDownlinkKbps et getStreamingAppMaxUplinkKbps pour déterminer la bande passante maximale du canal de communication afin de choisir le niveau de qualité lors de la diffusion en continu.
  • Un API a été fourni aux fabricants d'équipements pour créer des extensions pour les caméras, permettant d'utiliser des fonctionnalités spécifiques dans les applications, telles que le mécanisme d'amélioration de la résolution Super Resolution, les modes de réduction du bruit et les optimiseurs de qualité basés sur l'IA.
  • Ajout d'un API pour obtenir des informations sur le type de caméra (caméra intégrée, webcam USB ou caméra virtuelle).
  • Ajout de la prise en charge des aides auditives connectées via l'interface Bluetooth Low Energy (BLE). Ces dispositifs ont été classés dans une nouvelle catégorie TYPE_BLE_HEARING_AID, permettant aux applications de différencier les aides auditives et les écouteurs, ainsi que de gérer séparément la lecture des sons système (par exemple, il est possible de reproduire les sons des notifications, des appels et des alarmes sur le haut-parleur intégré du téléphone, plutôt que sur l'aide auditive).
  • Ajout des paramètres distincts pour activer l'affichage du mot de passe saisi sur le clavier physique et sur l'écran tactile. Par défaut, les caractères du mot de passe saisis à l'aide du clavier physique sont masqués immédiatement.
  • Amélioration de l'affichage des widgets d'applications sur les écrans externes, en tenant compte de la différence de DPI lors du redimensionnement.
  • Ajout de la requête ACTION_VPN_APP_EXCLUSION_SETTINGS, qui permet d'ouvrir l'écran système avec des paramètres permettant d'accorder à l'application un accès réseau hors tunnel. VPN- tunnel.
  • Ajout de la prise en charge des fonctionnalités du langage et des classes Java disponibles dans OpenJDK 25.
  • Les capacités des interfaces logicielles pour travailler avec la caméra ont été étendues. La méthode updateOutputConfigurations() a été ajoutée à l'objet CameraCaptureSession pour attacher ou détacher à la volée des zones de sortie sans avoir besoin de reconfigurer l'ensemble de la session de capture de données de la caméra. Dans la pratique, cette modification permet d'effectuer une transition fluide entre différents modes de fonctionnement de la caméra (par exemple, l'enregistrement vidéo et la capture de photos). Lors de l'utilisation de caméras logiques couvrant plusieurs capteurs physiques, une possibilité a été ajoutée pour obtenir des métadonnées sur chaque capteur, et non uniquement sur le primaire.
  • L'attribut android:usesCleartextTraffic, qui permettait à l'application de transmettre un trafic non chiffré, par exemple via «http://», a été déclaré obsolète. Si le trafic non chiffré est nécessaire, il convient d'utiliser des fichiers séparés avec des paramètres de sécurité.
  • Des paramètres ont été ajoutés pour gérer l'historique des appels VoIP, permettant de contrôler la conservation des informations dans les journaux et d'afficher dans l'interface des détails concernant les appels passés.
  • L'API Wi-Fi RTT (Round-Trip-Time) a été étendue pour permettre une détermination continue de la distance approximative aux points d'accès et pour identifier en toute sécurité les nœuds pour les connexions P2P (peer-to-peer).
  • De nouveaux profils ont été ajoutés au CompanionDeviceManager pour demander des autorisations et pour interagir avec des dispositifs médicaux et des podomètres.
  • Dans l'Android Runtime (ART), un collecteur de déchets générationnel (Generational Concurrent Mark-Compact Garbage Collector) a été implémenté, utilisant un traitement séparé des objets « anciens » et « jeunes », ce qui améliore l'efficacité du nettoyage des objets récemment créés ayant une courte durée de vie. L'utilisation du collecteur de déchets générationnel réduit le risque de suspensions lors de l'allocation de ressources et diminue la charge sur le CPU, ce qui améliore l'efficacité de la consommation d'énergie.
  • Une limite a été imposée à la quantité maximale de mémoire vive que peut occuper une application. En cas de dépassement du quota, calculé sur la base de la RAM disponible sur l'appareil, l'application est forcée à se fermer. Pour réduire la taille de la mémoire utilisée, un optimiseur R8 a été proposé, qui compresse les noms de classes, de méthodes et de champs, tout en supprimant le code et les ressources inutilisées.
  • Lors de la compilation du noyau Linux, l'optimisation AutoFDO (Auto-Feedback-Directed Optimization) a été activée, utilisant les résultats de profilage avec des informations sur la fréquence d'exécution de différentes sections de code pour améliorer les performances des opérations fréquemment exécutées. Des tests ont montré qu'activer AutoFDO pour le noyau a réduit le temps de démarrage de 2,1 %, accéléré le premier lancement des programmes de 4,3 %, amélioré l'efficacité des appels système de 9,3 %, réduit le temps d'exécution des transactions mmap pour Binder de 12,3 %, pour HwBinder de 20 % et pour Binder RPC de 21,7 %.
  • Une nouvelle implémentation de la file de messages android.os.MessageQueue, fonctionnant sans blocage, a été proposée. Cette nouvelle réalisation permet d'améliorer les performances et de réduire la perte de trames.
  • Aux applications déclarant prendre en charge Android 17 et les versions ultérieures, il est interdit de modifier les valeurs des champs marqués comme « static final », ce qui permet d'appliquer des optimisations de performance plus agressives à l'exécution.
  • Pour réduire la consommation de mémoire, la taille des mises en page de notification personnalisées est limitée.
  • Des déclencheurs supplémentaires TRIGGER_TYPE_COLD_START, TRIGGER_TYPE_OOM et TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE ont été ajoutés au ProfilingManager pour collecter des données utiles au débogage des problèmes de performance.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster