Communauté

En ce moment sur Android : épisode 121

Temps de lecture : 9 min
Daniel Galpin
Developers Advocate

Bienvenue dans "Now in Android", votre guide continu des nouveautés et des informations importantes dans le monde du développement Android.

Découvrez la version bêta 1 d'Android 16 QPR2, la mise à jour des fonctionnalités d'Android Studio Narwhal, Jetpack Compose 1.9, Media3 1.8, Shape Morphing, Autofill in Compose et bien plus encore.

Vous pouvez regarder un résumé vidéo :

 

 

Nous avons également un podcast.

Mais cet article contient les informations les plus détaillées. Alors, poursuivez votre lecture !

La bêta 1 d'Android 16 QPR2 est disponible ✨

La première version bêta d'Android 16 QPR2 est désormais disponible. Il s'agit de la première version d'Android avec une version mineure du SDK Android. Les versions mineures du SDK peuvent inclure de nouvelles API qui étendent les fonctionnalités de la plate-forme, mais ne peuvent pas introduire de modifications du comportement contrôlées par targetSdkVersion. Vous n'avez donc pas besoin de tester vos applications de manière approfondie.

sdk-release-graph.webp

Vous pouvez appeler de nouvelles API en vérifiant SDK_INT_FULL par rapport à l'énumération VERSION_CODES_FULL :

  if (Build.VERSION.SDK_INT_FULL >= Build.VERSION_CODES_FULL.BAKLAVA_1) {
  // Call new APIs from the Android 16 QPR2 release
}

VERSION_CODES_FULL ne peut pas être utilisé dans les attributs de fichier manifeste uses-sdk.

Voici quelques-unes des principales nouveautés de la version bêta 1 de QPR2.

Interface utilisateur, expérience système et accessibilité :

  • Une option de thème sombre étendu inverse intelligemment les applications claires pour les utilisateurs qui préfèrent une apparence sombre.
  • Des icônes d'application à thème automatique peuvent être générées par le système si votre application ne fournit pas de calque monochrome.
  • Les sessions de sélecteur interactif maintiennent l'UI de votre application active pendant que la feuille de partage est ouverte, à l'aide de ChooserManager et ChooserSession.
  • Une nouvelle API Data Transfer permet une migration des données plus fiable et sécurisée entre Android et iOS. Elle nécessite de mettre à jour le fichier XML des règles d'extraction des données de votre application et l'implémentation BackupAgent.
  • Le package android.graphics.pdf a été étendu pour permettre l'annotation et la modification de documents PDF via PdfRenderer.Page.
  • Les valeurs ViewConfiguration sont désormais adaptées aux appareils virtuels individuels. Migrez vers ViewConfiguration.get(context) pour les scénarios multi-écrans.
  • Vous bénéficiez d'un contrôle plus précis du retour haptique en spécifiant VibrationAttributes avec View.performHapticFeedback(HapticFeedbackRequest).
  • Les blocs de Réglages rapides peuvent désormais être attribués à des catégories prédéfinies dans le fichier AndroidManifest.xml.

Multimédia et audio :

  • Décodage logiciel pour le format et le modèle audio immersifs (IAMF, Immersive Audio Model and Formats), un format audio spatial ouvert.
  • Le partage audio personnel pour les appareils Bluetooth LE Audio est intégré directement au sélecteur de sortie du système.
  • Les utilisateurs peuvent contrôler la luminosité HDR à l'aide d'un curseur de luminosité HDR/SDR.
  • Les extras du sélecteur de photos peuvent mettre en avant des albums ou des requêtes de recherche spécifiques.

Connectivité :

  • Les améliorations apportées à la gestion des appareils associés (CDM) vous permettent de fournir des icônes d'appareil personnalisées, d'écouter le rappel EVENT_ASSOCIATION_REMOVED et d'activer la validation croisée des applications à l'aide de DeviceId.
  • Les mises à jour Bluetooth incluent la prise en charge de l'analyse passive pour BluetoothLeScanner (ScanSettings.SCAN_TYPE_PASSIVE), les raisons de la perte de liaison (BluetoothDevice.EXTRA_BOND_LOSS_REASON) et la récupération directe des UUID de service (BluetoothDevice.EXTRA_UUID_LE).
  • Les mises à jour de la technologie Wi-Fi RTT Ranging (RttStationRangingParams) permettent d'effectuer des mesures de distance par rapport aux stations.
  • Un nouveau PhoneNumberManager est disponible pour analyser et valider les numéros de téléphone à partir des en-têtes IMS P-Associated-URI.
  • Les améliorations apportées à la confidentialité du réseau MediaRouter permettent de caster du contenu sur de nouveaux supports comme le Bluetooth et l'UWB. Vous devez utiliser le sélecteur de sortie système ou demander les autorisations NEARBY_DEVICES pour les sélecteurs personnalisés dans l'application.

Confidentialité et sécurité :

  • Un nouvel état de sécurité au niveau du système, Secure Lock Device, verrouille les appareils et exige une authentification principale pour les déverrouiller.
  • Un bouton d'activation/de désactivation de la protection contre le vol de téléphone est ajouté pour permettre aux utilisateurs d'activer/de désactiver le verrouillage en cas d'échec de l'authentification.

Productivité des développeurs :

  • De nouvelles API AppWidgetManager vous permettent d'interroger les métriques d'engagement des widgets.
  • Les applications débogables installées via ADB recevront désormais des avertissements précoces concernant la compatibilité avec la taille de page de 16 ko.
  • ProfilingManager ajoute la prise en charge de nouveaux déclencheurs de profilage initiés par le système et de requestRunningSystemTrace pour capturer les traces en arrière-plan.
  • L'option "Journalisation détaillée des impressions" dans les options pour les développeurs fournit des informations de débogage supplémentaires pour le framework d'impression Android.
  • Des tests plus robustes pour les expériences sur ordinateur et multi-écrans sont activés avec les nouvelles API UiAutomation pour les captures d'écran sur les écrans non définis par défaut et AccessibilityWindowInfo.refresh publiques.
  • La compatibilité avec l'API a été ajoutée pour la nouvelle bibliothèque androidx.core:core-backported-fixes.
  • Les applications d'interface utilisateur graphique sont désormais compatibles avec le terminal Linux
  • WindowInspector.addGlobalWindowViewsListener prend en charge les notifications de modification de la vue racine en temps réel.

Vous pouvez inscrire n'importe quel appareil Pixel compatible pour recevoir les mises à jour bêta OTA ou utiliser des images système 64 bits avec l'émulateur Android dans Android Studio. La stabilité de la plate-forme est prévue pour octobre 2025.

La mise à jour groupée Android Studio Narwhal est stable : commencez à utiliser le mode Agent 🐳

narwhal.webp

La version stable de la mise à jour groupée Android Studio Narwhal est désormais disponible. Voici les nouvelles fonctionnalités et améliorations :

  • Le mode Agent de Gemini dans Android Studio est disponible pour les tâches de codage en plusieurs étapes.
  • Les règles de la bibliothèque de requêtes personnalisent le résultat de l'IA de Gemini en fonction des besoins de votre projet.
  • Transformer l'UI avec Gemini utilise une UI en langage naturel pour itérer sur l'UI Compose.
  • Assistance pour le développement immersif avec l'émulateur Android XR intégré, un nouveau modèle XR et l'outil d'inspection de la mise en page intégré pour XR
  • Accès étendu aux appareils via Android Partner Device Labs dans le streaming d'appareils Android.
  • Meilleures prévisualisations Compose avec une navigation dans le code améliorée et le nouveau sélecteur de prévisualisation Compose
  • Le compilateur Kotlin K2 est activé par défaut pour améliorer les performances de compilation.
  • Outils pour les tailles de page de 16 ko avec des avertissements Lint, des analyses et un émulateur pour vous aider à vous préparer aux futurs appareils avec des tailles de page de 16 ko.

Streaming sur des appareils Android, optimisé par Firebase

device-streaming.webp

Le streaming sur appareils Android, optimisé par Firebase, est désormais compatible avec les laboratoires de test d'appareils partenaires Android. Vous pouvez ainsi vous connecter à distance à des appareils Android physiques hébergés par des partenaires OEM, y compris Samsung, Xiaomi, OPPO, OnePlus et vivo.

Accélérer le développement avec des versions mensuelles pour Android Studio : deux fois plus souvent qu'avant

accelarating-releases.webp

Android Studio passe à un rythme de publication mensuel stable pour vous proposer plus rapidement de nouvelles fonctionnalités et des corrections de bugs critiques. L'IDE Android Studio sera mis à jour tous les mois, tandis que de nouvelles versions de la plate-forme IntelliJ seront disponibles tous les quelques mois. Les mises à jour groupées combleront les versions stables intermédiaires. L'émulateur Android et le plug-in Android Gradle continueront d'être mis à jour séparément tous les deux mois. Ce calendrier de publication accéléré est rendu possible par des investissements à long terme dans l'infrastructure de test.

Nouveautés de la version Jetpack Compose d'août 2025 🚀

jetpack-compose.webp

La version d'août 2025 de Jetpack Compose (version 1.9) est désormais stable. Cette version introduit Modifier.dropShadow et Modifier.innerShadow pour le rendu des effets d'ombre portée. Les nouveaux modificateurs onVisibilityChanged et onFirstVisible vous permettent de suivre la visibilité des éléments pour les mises à jour de l'UI ou la journalisation des impressions. Vous pouvez appliquer une mise en forme enrichie dans OutputTransformation à l'aide de TextFieldBuffer.addStyle pour les transformations de texte.

Les blocs de construction LazyLayout sont désormais stables. Vous pouvez définir un LazyLayoutCacheWindow pour améliorer les performances des Lazy List et des Grids grâce à une prélecture améliorée. Scrollable2D permet le défilement bidimensionnel, y compris le défilement rapide et le défilement imbriqué, avec diverses améliorations pour l'interopérabilité du défilement et du défilement imbriqué avec les vues. Une API d'activation (Composer.setDiagnosticStackTraceEnabled) fournit des informations plus détaillées sur l'emplacement des plantages dans les traces de pile. Elle est recommandée uniquement pour les versions de débogage. De nouvelles annotations @RememberInComposition et @FrequentlyChangingValue, ainsi que les vérifications Lint associées, sont disponibles dans une nouvelle bibliothèque d'annotations d'exécution. Vous pouvez personnaliser les menus contextuels à l'aide de Modifier.appendTextContextMenuComponents et Modifier.filterTextContextMenuComponents. Le plug-in Android Gradle (AGP) / Lint version 8.8.2 ou ultérieure est désormais requis.

Media3 1.8.0 : nouveautés 🚀

media3.webp

Media3 1.8.0 est désormais disponible. Il inclut plusieurs nouvelles fonctionnalités et améliorations. ExoPlayer dispose désormais d'un mode de déplacement rapide pour les recherches fréquentes effectuées par l'utilisateur. Vous pouvez l'activer via ExoPlayer.setScrubbingModeEnabled. HlsInterstitialsAdsLoader prend désormais en charge les diffusions en direct pour l'insertion d'annonces guidée par le serveur.

L'MetadataRetriever a été mis à jour pour vous permettre de récupérer la durée des éléments multimédias sans lecture. Pour Transformer, la version introduit des opérations de découpage plus rapides à l'aide de listes de montage MP4 avec experimentalSetMp4EditListTrimEnabled et des optimisations d'encodeur spécifiques au chipset via CodecDbLite, activées en appelant setEnableCodecDbLite sur DefaultEncoderFactory.Builder.

Les autres nouveautés incluent la prise en charge du téléchargement partiel dans Downloader avec PreCacheHelper, le routage audio XR automatique dans ExoPlayer et des interactions MediaCodec plus efficaces. Le module MediaSession conserve désormais les notifications visibles plus longtemps par défaut, et l'application de démonstration de session multimédia présente la fonctionnalité de reprise de la lecture. Une nouvelle application de démonstration Composition, conçue avec Kotlin et Compose, présente le montage vidéo multi-éléments avancé.

Articles 📚

#WeArePlay : à la rencontre de ceux qui codent un monde plus durable

weareplay.webp

L'initiative #WeArePlay met en avant les applications et jeux Android qui s'attaquent aux défis environnementaux. Le jeu BoRa — Parc national d'Iguaçu, développé par Mayla, Flávia, Andréia et Ariane, propose des expériences interactives ludiques et accessibles pour l'éducation à la nature lors des visites du parc. L'application CyberTracker de Louis et Justin permet aux pisteurs autochtones analphabètes d'enregistrer des données sur la biodiversité grâce à une interface basée sur des icônes, ce qui contribue aux efforts de conservation. Enfin, Earth5R, cofondée par Bharati et Saurabh, propose une formation sur l'environnement et met en relation les utilisateurs avec des stages et des projets pour développer des compétences dans l'économie verte.

Qu'est-ce que le HDR ? 🌟

hdr.webp

La plage dynamique élevée (HDR) permet aux développeurs Android d'augmenter la luminosité maximale au-delà de la plage dynamique standard (SDR), ce qui améliore la fidélité visuelle. Android est compatible avec le HDR pour les vidéos et les images, y compris avec des technologies comme Ultra HDR pour la rétrocompatibilité.

Pour comprendre les couleurs, vous devez tenir compte de trois éléments :

  • Profondeur de bits : définit la précision de la représentation des couleurs. Plus la profondeur est élevée, plus les transitions sont fluides.
  • Fonction de transfert : mappe les valeurs numériques des pixels à la luminance ou à la couleur affichées, en tenant compte de la réponse visuelle non linéaire de l'être humain. Par exemple, sRGB, HLG et PQ.
  • Gamme de couleurs : représente la gamme de couleurs qu'un appareil peut reproduire.

Idées reçues courantes sur le HDR :

  • Couleurs éclatantes : des gammes de couleurs plus larges comme Display P3 et Adobe RVB étaient disponibles avant le HDR, et la plupart des écrans sont toujours limités à P3, même avec du contenu BT.2020.
  • Contraste plus élevé/meilleure définition des noirs : la technologie HDR n'offre pas intrinsèquement des noirs plus profonds que la technologie SDR sur le même écran. Les écrans OLED offrent un contraste infini pour les deux. Bien que PQ alloue plus de bits aux régions sombres, il ne s'agit pas d'une fonctionnalité HDR universelle.
  • Profondeur de bits plus élevée : si certains profils vidéo HDR (par exemple, HDR10) utilisent des flux de 10 ou 12 bits, cela est spécifique à ces profils et non inhérent au HDR lui-même. Les profondeurs de bits plus élevées sont également courantes dans d'autres formats d'image.

HDR signifie principalement une luminosité maximale plus élevée. Cette "marge HDR" est définie comme une région flottante par rapport à la SDR. Alors que les vidéos HDR traditionnelles encodent souvent une marge fixe, les écrans modernes utilisent une marge dynamique, ce qui peut entraîner des différences de qualité. Des technologies telles qu'Ultra HDR et les gainmaps offrent des alternatives avec une utilisation efficace des bits. La boîte à outils d'interface utilisateur d'Android utilise l'API extendedRangeBrightness pour offrir des expériences HDR, même avec RGBA_8888.

Vidéos 📹

Éléments partagés avancés avec morphing de forme | Conseils Jetpack Compose

Jetpack Compose permet désormais des transitions d'éléments partagés avancées, des morphings de formes sophistiqués et des animations de révélation. Les développeurs peuvent configurer SharedTransitionLayout au niveau supérieur de l'application et utiliser Modifier.sharedBounds pour associer des éléments.

La morphose de forme est une nouvelle fonctionnalité clé, obtenue en exploitant la bibliothèque de formes graphiques AndroidX de Material 3. Cela implique de créer un objet Morph avec des formes de début et de fin définies, de faire progresser son animation avec animateFloat (à partir de AnimatedVisibilityScope) et de l'appliquer en tant que clip via un OverlayClip personnalisé. Les effets de révélation utilisent skipToLookaheadSize et skipToLookaheadPosition. Toutes ces animations avancées sont également compatibles avec les gestes pour la prévisualisation du Retour.

Gemini multimodal dans Android Studio : développement d'UI optimisé par l'IA

L'IA Gemini dans Android Studio aide au développement d'UI en générant du code à partir de conceptions (y compris image-to-code), en créant des aperçus Compose avec des données synthétiques et en affinant les UI existantes à l'aide de commandes directes.

Utiliser un SDK compatible avec Runtime

Android 14 introduit SDK Runtime, une nouvelle technologie qui isole les SDK tiers dans un bac à sable de processus sécurisé et distinct pour améliorer la confidentialité et la sécurité.

Pour les développeurs :

  • Les SDK compatibles avec l'environnement d'exécution (RE-SDK) s'exécutent dans ce processus distinct.
  • Les SDK compatibles avec l'environnement d'exécution servent d'intermédiaires dans votre application.
  • Chargez les SDK RE à l'aide de SdkSandboxManagerCompat en respectant les contraintes (par exemple, premier plan, chargement unique).
  • Les outils de shim simplifient la communication interprocessus de bas niveau.
  • Affichez l'UI à partir des RE-SDK à l'aide de SandboxedSdkView et SandboxedUiAdapter.
  • Lancez des activités depuis SDK Runtime à l'aide de SdkActivityLauncher.

Morphing de forme Material 3 pour Wear OS | Conseils Jetpack Compose

Wear OS Material 3 pour Compose simplifie désormais la morphose des formes. Les développeurs peuvent facilement ajouter des modifications de forme animées aux boutons ronds avec IconButtonDefaults.animatedShapes, créer des groupes de boutons qui animent les modifications de largeur à l'aide du composant ButtonGroup et de Modifier.animateWidth(), et créer des listes à défilement vertical (TransformingLazyColumn) où les éléments sont mis à l'échelle et se transforment à l'aide de TransformationSpec lorsqu'ils approchent des bords de l'écran.

Versions d'AndroidX 🚀

Voici un résumé des modifications apportées à AndroidX, en privilégiant celles qui sont les plus pertinentes pour les développeurs d'applications Android :

Changement global ayant un impact sur les bibliothèques Compose :

  • Par défautminSdkPassage à l'API 23 : pour androidx.compose animation, foundation, material, runtime et ui, la version minimale du SDK par défaut est passée de l'API 21 à l'API 23. Cela signifie que si vous utilisez les dernières versions alpha de ces bibliothèques Compose, votre application nécessitera implicitement Android 6.0 (Marshmallow) ou version ultérieure.

Principales modifications pour les développeurs Compose :

  • Nouvelle API de conservation (Compose Runtime) : introduit une API de conservation semblable à rememberSaveable, mais pour les valeurs qui quittent la hiérarchie de composition sans être sérialisées. Il a une durée de vie plus courte que les valeurs enregistrées et se comporte de la même manière qu'un ViewModel, ce qui offre une nouvelle façon de gérer l'état des composables qui peuvent entrer et sortir de la composition.
  • Transitions d'éléments partagés améliorées (Compose Animation & UI) : nouvelles API permettant d'activer/de désactiver dynamiquement les éléments partagés, de tenir compte des transitions en cours et de définir d'autres limites cibles lorsqu'un élément partagé est supprimé. Un nouveau Modifier.skipToLookaheadPosition est également disponible pour ancrer les mises en page.
  • Amélioration du préchargement du pager (Compose Foundation) : la stratégie de préchargement du pager utilise désormais une "fenêtre de cache" (taille d'une fenêtre d'affichage) au lieu d'un seul élément. Le préchargement initial est activé par défaut. Les éléments sont également conservés plus longtemps pour un défilement plus fluide.
  • Gestion améliorée de la mise au point pour la souris/le pavé tactile (Compose Foundation et UI) : ComposeViews efface désormais automatiquement la mise au point lorsqu'un événement de pointeur vers le bas (souris ou pavé tactile) se produit en dehors du nœud sélectionné. Vous pouvez désactiver cette fonctionnalité.
  • Rectangles de sélection personnalisables (Compose Foundation) : FocusProperties vous permet désormais de définir une zone de sélection personnalisée au lieu d'utiliser par défaut le cadre de sélection. Cela améliore le parcours de sélection et la logique "Garder en vue" dans les conteneurs à faire défiler.
  • Composable LifecycleOwner (cycle de vie) : un nouveau composable permet de créer des instances LifecycleOwner à portée limitée directement dans l'arborescence de l'UI. Cela est particulièrement utile pour gérer les cycles de vie des composants de manière indépendante et pour les bibliothèques telles que Navigation.
  • Prise en charge des types Nullable dans SavedStateHandle (Lifecycle et SavedState) : enregistrement et restauration simplifiés des propriétés Nullable grâce à la prise en charge native dans SavedStateHandle et SavedStateRegistryOwner.
  • NouveauLineHeightStyle.Mode.Tight (Compose Foundation et UI) : un nouveau mode "Tight" (Serré) permet d'appliquer des hauteurs de ligne plus petites, même si cela signifie potentiellement couper les glyphes plus grands, offrant ainsi un contrôle plus précis de la mise en page du texte.
  • Appuyer deux fois pour sélectionner un mot (Compose Foundation) : ajout de la prise en charge de l'action d'appuyer deux fois pour sélectionner des mots dans SelectionContainer et BasicTextField.
  • Modifications du comportement de WindowInsets (Compose UI et Foundation) :
    ◦ Nouvelle API WindowInsets.cutoutPath pour obtenir le chemin d'accès à l'encoche.
    ◦ L'indicateur isWindowInsetsDefaultPassThroughEnabled a été supprimé. Par défaut, WindowInsets n'est pas consommé, ce qui permet aux vues enfants de le recevoir.
  • AndroidView requestRectangleOnScreen Correction (Compose Foundation) : les requêtes effectuées par AndroidViews (par exemple, EditText qui tente de rester à l'écran) sont désormais correctement propagées à Compose.
  • Amélioration du défilement avec la molette de la souris en 2D (Compose Foundation et UI) : meilleure prise en charge des événements de défilement avec la molette de la souris en 2D, avec de nouvelles API de test et un indicateur permettant de contrôler le comportement.

Nouvelles bibliothèques et utilitaires :

  • androidx.core:core-backported-fixes (Nouvelle bibliothèque) : cette nouvelle bibliothèque permet aux développeurs de vérifier si des corrections de bugs critiques (par exemple, des problèmes au niveau de la plate-forme, comme des bugs spécifiques à l'appareil photo) ont été appliquées à un appareil. Cela permet de proposer différentes expériences utilisateur selon qu'un bug connu est résolu ou non.

Autres modifications notables :

  • Activité et saisie des jeux : ajout de la prise en charge par défaut des tailles de page de 16 ko et de la prise en charge de la souris pour GameActivity.
  • Positionnement des info-bulles Material3 : davantage de fournisseurs de position pour les info-bulles, ce qui permet de les placer au-dessus, en dessous, à gauche ou à droite de l'ancrage.
  • Material3DatePickerCorrectifs : garantit que DatePicker respecte sa propre langue pour la mise en forme des nombres et corrige les problèmes d'affichage de droite à gauche.
  • Prise en charge de display_override pour les TWA (navigateur) : ajout de la prise en charge de la propriété de fichier manifeste TWA display_override, qui offre un meilleur contrôle sur l'affichage des TWA.
  • Lancer l'URL initiale dans une application externe (navigateur) : ajout d'un intent pour permettre de lancer l'URL initiale d'une TWA dans un navigateur externe.

Android Developers Backstage

Android Developers Backstage est de retour avec un nouvel épisode.

Saisie automatique dans Compose

Jetpack Compose 1.8 introduit des fonctionnalités de saisie automatique considérablement améliorées, qui exploitent le système sémantique de Compose. Les développeurs peuvent désormais intégrer facilement la saisie automatique au niveau du système en taguant simplement les champs de texte avec des sémantiques de type de contenu pertinentes (par exemple, nom d'utilisateur, mot de passe). Ils n'ont ainsi plus besoin de gérer manuellement l'arborescence de saisie automatique, ce qui améliore les performances.

 

Alors… 👋

C'est tout pour cette édition, avec la couverture de Android 16 QPR2 bêta 1, la version de fonctionnalité Android Studio Narwhal, Jetpack Compose 1.9, Media3 1.8, Shape Morphing et Autofill in Compose, et bien plus encore.

À bientôt pour de nouvelles informations sur l'univers des développeurs Android !

Écrit par :

Lire la suite