Articles

Google I / O 2021 : concentré du cortège d’annonces de cette édition numérique ! (Google I / O promise, Google I / O dûe…)

JetPack et JetPack Compose

Un peu de hauteur en continuant sur les annonces de JetPack amorcées pour WearOS : l’ensemble de librairie continue de s’enrichir avec un lot conséquent de nouveautés ou d’améliorations. En 2020, JetPack consituait 47 % des applications du Play Store, au sein du top 1 000 des applications mobiles ; 79 %, pour cette année.

 

 

Condensé des annonces :

 

  • Changement de la teneur des cycle alpha et bêta. Concernant les bêtas, changement des APIs “uniquement en réponse aux problèmes critiques ou au retour-communauté“. Concernant les alphas, les APIs peuvent être ajoutées, modifiées ou changées tout en continuant les tests, avec, dans l’ensemble, un contenu hautement fonctionnel ;

 

  • Annotations Expérimentales (stable) : nouvelle méta-donnée pour mieux suivre les évolutions de développement des APIs (vision alpha-bêta avec une annotation, par exemple, pouvant être enlevée en bêta). Disponible sous JetPack, par ailleurs, pour “quiconque” voudrait l’exploiter ;

 

  • CameraX (stable) : API unifiée intégrant la compatibilité-terminal, “les erreurs et les solutions de contournements“. Améliorations : support de la compensation à l’exposition, plus d’informations (accessibilité) sur l’état de la caméra et ses fonctionnalités. Quand la caméra est active, des configurations conjointes sont désormais possibles. Support HDR Preview, Zoom ratio control ainsi que le mode “ne pas déranger”. Côté performance : optmisation, en terme de vitesse, des fonctions de capture (+15 %) et d’initialisation (+25 %) ;

 

  • AppSearch (alpha) : simplification des schémas pour les objets communs (schemas.org, Android S et versions supérieures) ;

 

  • DataStore : pour pallier aux incohérences de SharedPreferences “tout en conservant une surface API plus simple et hautement utilisable”. Support des co-routines Kotlin (Flow, RxJava). Stockage via Preference DataStore (clé-valeur paire) ou via Proto DataStore (objets – tampons de protocole). Possibilité de sérialisation (Kotlin) ;

 

  • Security Crypto (stable) : chiffrement-fichier et préférences. Intégration de DataStore dans une autre version à venir ;
  • Room (stable) : support pour KSP (Kotlin) et RxJava3 ;

 

  • ConstraintLayout (stable, v2.0) : stabilité de MotionLayout. Support des terminaux souples ou flexibles et exploitation des filtres (image) ou effets (vidéo) ;
  • Fragment (stable) : “cela jette les bases d’améliorations futures de la bibliothèque, comme la prise en charge de plusieurs backstacks dans Navigation, et cela peut nécessiter du travail pour permettre une application stricte des contrats d’API. En pratique, vous devez porter une attention particulière à vos tests après la mise à jour de la bibliothèque. […] Les versions récentes ont également introduit l’intégration d’ActivityResult, ce qui permet de s’inscrire aux résultats d’activité à partir d’un fragment. Fragment a également ajouté une nouvelle interface FragmentOnAttachListener pour remplacer la méthode onAttachFragment moins flexible. Le code existant qui remplace cette méthode dans Fragment ou FragmentActivity fonctionnera toujours, mais nous avons déprécié onAttachFragment pour éviter que le nouveau code n’adopte accidentellement une approche moins flexible”, indique le billet de blog dédié ;
  • Navigation (alpha) : simplification du framework pour “les cas où les destinations se trouvent à la même profondeur, comme une barre de navigation inférieure” ;
  • Shortcuts (alpha) : jusqu’à 15 raccourcis peuvent être gérés depuis le ShortcutManager (accessibilité-affichage depuis l’assistant Google) ;
  • EmojiCompat (alpha) : pour les versions 1.4 ou supérieures ;

 

  • Paging (stable) : nouvelle version estampillée 3.0. Planification de la réécriture (y compris sous Kotlin) avec des migrations partielles ou selon le besoin (cf. CodeLab Paging 3.0 pour les détails). Support, également ici, des co-routines Kotlin (Flow) ainsi que du “chargement asynchrone avec les primitives RxJava et Guava, et des améliorations globales du référentiel et des couches de présentation” ;
  • Macrobenchmark (alpha) : suivi des métriques pour les tests (intégration) ou les résultats de profilage (en local), depuis Android Studio ;
  • JetPack Compose (bêta : version stable d’ici Juillet 2021) : “Jetpack Compose est la boîte à outils moderne d’Android pour la création d’une interface utilisateur native. Il simplifie et accélère le développement de l’interface utilisateur sur Android. Jetpack Compose est actuellement en version bêta et devrait devenir stable en juillet. La plupart des bibliothèques répertoriées ici, ainsi que d’autres que vous utilisez peut-être déjà, ont introduit des fonctionnalités spécifiquement pour l’intégration avec Jetpack Compose. Allant de Activity à ViewModel, Navigation ou Hilt, toutes ces bibliothèques peuvent faciliter l’adoption de Compose dans votre application“.

 

JetPack Compose était, également, au programme : initialisé depuis 2018, l’ensemble est donc re-présenté (pour les non-initiés ou curieux) comme étant une “boîte à outils déclarative dégroupée“. Après une brève rétrospective sur Views, un autre toolkit et la conclusion que le temps – même au sein du code et plus largement du Web – fait son effet, l’équipe de JP Compose présente les dernières évolutions de cette fameuse boîte à outils dont la première bêta est arrivée récemment, en Février 2021. Comme le montre l’illustration ci-dessous, sans ambiguité, il est rappellé que JP Compose déboulera en version 1.0. Disponibilité de cette version : Juillet 2021 !

 

Pour le commun des mortels (les non-développeurs) une rétrospéctive sur la mise à jour est, également, faite ; et pour cause : il est expliqué que, par rapport à XML Layout, l’UI déclarative (de Compose) ne sera pas systématiquement actualisée ou rafraîchie du fait, tout simplement, qu’une fois la mise en production faite, l’application sera et restera à jour. Il suffira, alors, au développeur, de ré-exécuter l’état pour avoir un versionnage-logiciel supérieur de l’UI initiale.

 

JetPack Compose permet de faire (beaucoup) des choses comme un agencement de mise en page dans presque toutes les dimensions de blocs. Un exemple bien sûr très ludique pour montrer la capacité adaptative du toolkit qui est entièrement écrit sous Kotlin : co-routines ou encore extraction-UI se feront par le biais de nouvelles fonctions.

 

 

Une inter-opérabilité avec View reste, aussi, possible, ce qui permettra d’intéger l’un dans l’autre et vice-versa. Compose pourra, outre JetPack bien sûr, s’intégrer au sein d’autres bibliothèques et incluera deux wrappers (appel d’une fonction par une autre – encapsulage)  via image loading mais, aussi, des adaptateurs (theme adapters) pour les thèmes XML Material ou AppCompat.

 

Côté tests, l’optimisation de ces derniers (artefact) en mode isolé permet, avec les dernières mises à jour UI de simuler du code sur une base actuelle du logiciel en question. Un mode Preview est également disponible.

 

 

Sources :




  • 50% J'apprécieVS
    50% Je n'apprécie pas
    Pas de commentaire

    Laisser un commentaire

    ;) :zzz: :youpi: :yes: :xmas: :wink: :whistle: :warning: :twisted: :sw: :sleep: :sg1: :schwarzy: :sarko: :sante: :rollol: :roll: :rip: :pt1cable: :popcorn: :pff: :patapai: :paf: :p :ouch: :oops: :o :non: :na: :mrgreen: :mdr: :macron: :love: :lol: :kissou: :kaola: :jesuisdehors: :jap: :ilovesos: :idea: :houra: :hello: :heink: :grumpy: :fume: :frenchy: :fouet: :fouet2: :first: :fessee: :evil: :dispute: :demon: :cryy: :cry: :cpignon: :cool: :cassepc: :capello: :calin: :bug: :boxe: :bounce: :bluesbro: :bisou: :babyyoda: :assassin: :arrow: :annif: :ange: :amen: :D :??: :?: :/ :-| :-x :-o :-P :-D :-? :-1: :+1: :) :( 8-O 8)

    Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

    Copyright © Association SOSOrdi.net 1998-2021 - v1.10.0