Les 24 et 25 octobre derniers, deux représentants de notre équipe de développement Android se sont rendus, à Londres, à la droidcon 2019 pour faire le plein de nouveautés techniques à propos de leur plateforme fétiche. Reportage.

À peine sortis de l’Eurostar, nous prenons le métro londonien pour rejoindre le Business Design Centre qui héberge chaque année la convention. En bons développeurs, nous récupérons tout d’abord nos badges, quelques goodies, puis faisons le tour des stands avant de nous poser pour prendre un café bien mérité.

Un show floor noyé de passionnés Android

Une keynote pour coder comme un athlète

Pour la keynote de cette droidcon 2019, Christina Lee (@runchristinarun) fait le parallèle entre les développeurs (qu’elle appelle Brathletes, Brain/athletes) et les athlètes.

D’abord, le lundi comme les sportifs qui regardent le match qui s’est joué la semaine dernière pour apprendre de leurs erreurs, on fait le point sur ce qui s’est mal passé et ce qu’on peut améliorer.

Ensuite on peut apparenter les développeurs à des athlètes pour plusieurs raisons: on porte des « uniformes » d’équipes, nos managers cherchent à tirer le meilleur de nous et on change d’équipes régulièrement.

On notera aussi qu’en moyenne, les développeurs changent de tâche toutes les 10 minutes, et qu’il est important de garder un déroulement de journée fluide pour se sentir plus satisfait et moins stressé.

Enfin, elle apporte quelques conseils pour améliorer la vie des développeurs :

  • Fluidifier le déroulement de la journée et planifier des interruptions à l’avance ;
  • Savoir faire la transition hors du « mode travail » pour décompresser complètement pendant les pauses ;
  • Écrire les tâches qui ne sont pas terminées et prévoir comment les terminer pour éviter de perdre du temps lors qu’on change de tâche ;
  • Rassembler les tâches qui se ressemblent ;
  • Découper les grands objectifs en plusieurs petites tâches.

Quelle bibliothèque Reactive choisir pour créer une application mobile avec Android ?

La keynote terminée, l’espace commun se remplit et on en profite pour se diriger vers la première conférence, « RX in multiplatformland », où Sergey Ryabov (@colriot) compare différentes bibliothèques Reactive sur Android.

La première bibliothèque abordée est aussi la plus populaire : RxJava2. Les constats de Sergey sont flagrants. Si RxJava2 est la bibliothèque la moins gourmande en mémoire, à contrario elle exige d’écrire énormément de code tandis que sa rapidité d’exécution demeure moyenne.

On se tourne ensuite vers Reaktive, qui inclut déjà la plupart des opérateurs (tels que groupBy, publish, share, etc.). Côté rapidité, on est à plus du double de la vitesse d’exécution par rapport à RxJava2, et même si Reaktive 1.0.2 promet une consommation mémoire moindre, la version actuelle a besoin du triple de celle de RxJava2.

Enfin, Flow semble être la solution la plus alléchante. Le nombre de lignes de code est de loin le plus faible. La bibliothèque est la plus rapide des 3, et sa consommation mémoire n’est qu’au double de RxJava2. Son talon d’Achille ? Les opérateurs n’existent quasiment pas, et il faudra soit les implémenter soi même, soit les importer via des extensions.

Les 3 principes d’une architecture Reactive efficace

Après une courte pause, nous enchaînons avec Benoît Quenaudon (@oldergod), pour qui « une architecture Reactive efficace se compose de 3 principes ».

Tout d’abord il faut isoler les « side effects » afin de mieux les gérer. Ce sont des composant indépendants qui écoutent les actions, les traitent une fois reçues, et peuvent éventuellement générer après coup une nouvelle action.

Ensuite il faut avoir un flux de données unidirectionnel, c’est à dire (pour une architecture MVP) que les évènements vont de la View (en « lecture », c’est à dire via une interaction de l’utilisateur) vers le Presenter, puis à nouveau vers la View (en « écriture », c’est à dire en modification suite au retour du Presenter). En cas d’absence de logique, on passe les évènements de la View en lecture directement à la View en écriture.

Enfin, il faut rendre immutable le plus de code possible pour limiter les modifications non voulues. C’est déjà le cas en Kotlin où les actions sont des classes immutables.

Quels sont les fondamentaux d’un thème sombre (dark mode) pour une application mobile Android ?

Après une pause du midi et un sandwich assez décevant, nous nous dirigeons vers la conférence sur le thème sombre pour Android par Faiz Malkani (@malkani_faiz).

Un thème sombre n’est pas un thème secondaire, c’est une option au même titre que le thème clair, et parfois même le thème par défaut.

Pour lui, les fondamentaux du thème sombre sont l’élévation, qui est gérée par la couleur plutôt que par une ombre portée (car une ombre n’y serait pas visible), la couleur qui doit être désaturée et limitée dans ses tons, et le contraste qui doit passer les tests de ratio 15.4:1 et 4.5:1.

Enfin il est important de faire des tests dans des environnements différents: de jour, en début de soirée, ou dans le noir, et de savoir qu’un thème gris foncé consomme 0.063% de batterie supplémentaire par heure, mais qu’un thème purement noir ne transcrit pas aussi bien une large gamme de couleurs et d’élévations.

Quelques exemples de bons élèves: Twitter, Pocket Casts, ou encore Sync for Reddit.

Un cas concret de réalité augmentée au service de l’expérience client

Le lendemain, on rejoint Giovanni Laquidara qui travaille pour TUI et nous explique un besoin simple : utiliser la réalité augmentée pour aider les clients à mesurer leurs bagages.

Si iOS a un grand avantage avec ARKit, Android a rattrapé son retard en matière de réalisée augmentée avec la bibliothèque ARCore. Celle-ci permet entre autres le tracking de mouvement, la détection des plans, l’estimation de lumière, la détection d’image ou encore la reconnaissance faciale.

Grâce à ces fonctionnalités, Giovanni nous explique comment il est parvenu a réaliser une application mobile qui affiche une boite semi-transparente en réalité virtuelle dans laquelle on peut filmer sa valise et s’assurer qu’elle ne dépasse pas la taille maximale autorisée.

Comment utiliser les deeplinks pour naviguer dans les applications modulaires ?

Enfin pour la dernière conférence, Damian Burke propose d’utiliser les deeplinks pour naviguer dans les applications modulaires. Les différentes méthodes de navigation posent des inconvénients : la navigation à la demande crée des startActivity / intent qui sont dispersés à travers l’application ; un navigateur global devient facilement un goulot d’étranglement ; et les navigateurs satellites s’embourbent car ils nécessitent énormément d’imports.

L’utilisation des deeplinks permet de simplifier la navigation en appelant des schémas d’URI (Uniform Ressource Identifier). La première idée était d’utiliser un schéma simple (ex: myapp://dashboard), mais on perd malheureusement le lien avec l’écran précédent. Pour palier ce problème, on peut définir l’écran précédent dans le schéma, on obtient alors myapp://team/123/player/1234.

L’inconvénient principal reste qu’on ne peut pas attacher d’objet à un deeplink, et dans ce cas on devra toujours utiliser un Bundle.

Au revoir droidcon 2019, bonjour droidcon 2020 ?

Au final nous avons passé 2 jours de conférences assez intéressants, certaines plus que d’autres, mais toujours des intervenants très motivés qui poussent la communauté Android à l’innovation, et apportent des débuts de solutions aux problèmes rencontrés tous les jours par les développeurs Android.

Nous avons pu assister à des conférences qui répondent à des problématiques sur des projets en cours, et même si le repas du midi n’était pas au rendez-vous cette année (et on sait qu’un développeur bien nourri est un bon développeur), nous avons hâte d’assister à la droidcon 2020 pour retrouver, nous l’espérons, des conférences de qualité et une organisation impeccable.

Vous avez un projet d’application Android à base de réalités augmentée, une application portail mettant à profit la technologie deeplink, besoin d’un dark mode, ou tout autre projet permettant d’améliorer l’expérience client depuis une application mobile ?

Découvrez depuis ces liens comment notre équipe Design d’Experience et nos experts en développements d’applications mobiles natives peuvent vous accompagner :

Je veux être accompagné par les équipes d’IKOMOBI !