Android Makers 2019 : On fait le point

Le 23 et 24 avril 2019 a eu lieu la 3ème édition d’Android Makers, l'événement d’envergure autour d’Android en France.

Cette année, nous étions environ 800 participants accueillis au Beffroi de Montrouge. Au programme de ces 2 jours : une soixantaine de sessions aux formats différents (talks, workshops, cliniques, questions/réponses…), dont certaines animées par des figures connues de la communauté internationale. En voici notre sélection.

Période de Pâques oblige, une chasse aux desserts Android était organisée, avec à la clef un Bugdroid en chocolat à gagner. Les plus malins sont allés fouiller directement dans le code source de l’app Android Makers.

L’ouverture

Cette année la keynote d’ouverture était menée par la Googleuse Florina Muntenescu, avec un talk sur le “Pragmatic Crafting” : un must see !

Pour elle, une application ne se limite pas seulement à son code : c'est avant tout une équipe qui construit un produit, qui partage une vision commune et qui parle le même langage. Vous voulez savoir si votre équipe va bien ?

Dans ce talk on nous a bien entendu parlé d'un des grands principes du craft : Single responsability principle (le fameux S de SOLID)

“Arrêter de faire des God classes avec tout et n'importe quoi dedans !”

Découper c'est bien, encore faut-il faire communiquer les différents modules. Aidez vous des APIs, cela permet plus de flexibilité, de consistances et avoir des erreurs qui parlent ! Beaucoup de principes de ce talk nous évoquent ceux de la clean architecture. Mais pour elle, les softs skills sont tout aussi importants.

Gardez un œil sur où vous en êtes et où vous voulez aller, que ce soit techniquement sur le projet, mais aussi vous personnellement, “Prenez le contrôle sur votre carrière” :

  • Quels sont vos leviers de motivation ?
  • Fixez-vous des objectifs
  • Suivez vos apprentissages et vos succès
  • Prenez le temps de regarder dans le rétroviseur pour savoir si vous êtes toujours on rails !

Un des autres points est d’avoir de l'empathie. La communication et surtout la capacité à avoir une bonne communication au sein de l'équipe est très importante, c'est la base pour avoir une bonne collaboration. Ce que l’on a aimé dans ce talk, c’est le parallèle entre la technique et l’organisation : l’humain mis au centre. C'est le genre d'état d'esprit qu'on essaie d'avoir à Octo dans nos équipes projet et d'entendre ce discours des géants du web est très enrichissant.

Animer toutes les vues !

Cette cuvée d’Android Makers 2019 a vraiment mis le doigt sur les vues et les animations avec environs une quinzaine de présentations sur le sujet. Avec les “nouveaux” outils mis à disposition, il est vraiment facile d’animer des vues.

On peut notamment citer : ShapeShifter, Lottie, AnimatedVectorDrawable, ViewPropertyAnimator, Physics based animation, MotionLayout

Rebecca Franks nous a justement fait un très bon talk sur ces différents moyens d’animer les vues dans “In a World of Pure Android Animation”. Avec tout ça, il n’y a vraiment plus d’excuse pour ne pas ajouter un peu de mouvement à votre application !

Le “ConstraintLayout 2.0” est revenu dans cette édition 2019. Présenté par Nicolas Roard et John Hoford, ils nous ont montré qu’il était maintenant plus facile d’animer des vues avec juste du XML grâce au MotionLayout et ses différentes propriétés : Custom attributes, image transitions, keyframes…

Ils nous ont aussi présenté Flow un helper du ConstraintLayout qui permet d’aligner ses vues plus facilement, compatible avec MotionLayout évidemment !

On vous voit venir, vous êtes en train de vous dire “eh mais ça à l’air super facile de mettre des animations, je vais en mettre plein, ce sera super joli”. Sauf qu’il ne faut pas non plus transformer votre application en un magnifique sapin de Noël. Juhani Lehtimäki et Pierluigi Rufo dans “Meaningful motion design and how to implement it” nous ont montré où placer le curseur entre une application statique et une autre pleine d'animations. Ce n’est pas parce qu’il est maintenant facile d'en faire qu’il faut en mettre partout, ce qui les rend trop envahissantes ! Il est possible d'en faire qui sont discrètes et qui ont beaucoup de sens, vous en trouverez quelques exemples dans leur présentation.

Côté vues, on a eu quelques talks intéressants. On a eu le droit a un petit récapitulatif sur les styles/thèmes présenté par Anita Singh. Si vous pensiez tout connaître sur ce sujet, on vous conseille quand même de regarder la VOD vous pourriez apprendre quelque choses. Mais le gros de sa présentation était sur l’intégration du MaterialComponent dans une application existante. Et il y a du boulot ! En effet, son intégration risque de casser vos designs (de dialogs, buttons etc...). Elle conseille donc de le faire petit à petit, vue par vue.

Florent Champigny a profité de cette édition pour nous rappeler la base des custom views dans son talk “Dessine moi une vue” : les canvas, paint et path. Ce talk permet de mieux comprendre comment dessiner toutes sortes de vues par nous-même qui ne sont pas forcément disponibles avec le framework. Et devinez quoi ? Il nous montre aussi comment on peut animer nos custom views avec ValueAnimator.

Et maintenant ? Comment on organise toutes nos custom views ? Lors du développement d’une “grosse” application, ou de plusieurs avec le même design, il arrive très souvent que différents designers et développeurs travaillent sur lesdites apps. Dans ce cas de figure, comment être consistant au niveau design (éviter de dupliquer les ressources, couleurs etc…) ?

Le talk de Maria Neumayer “Consitency is Key - Working with a Design System” nous montre ce qui a été réalisé chez Deliveroo pour pallier à cette problématique : le design system. En effet, ils ont mutualisé l’UI qui est commune à leurs 3 apps. Une librairie va contenir tous les composants : les différents TextView avec leur style (Header, subtitle etc…), les boutons et leurs états correspondants (selected, clicked etc…), les icônes, les couleurs etc... Ainsi,  ils vont utiliser les mêmes composants et éviter de les refaire à chaque fois. On comprend tout de suite l’utilité dans un projet à plus de 5 devs !

Éloge de la (co)routine

Cette année, on a parlé beaucoup (trop ?) des coroutines et de Kotlin.

Tout d’abord, celui de Louis CAD : “Making any codebase more readable with Kotlin coroutines” : simplifiez-vous la vie avec les coroutines ! En effet, oubliez les libs pour le changement de thread (coucou Rx), utilisez les coroutines pour le faire, c’est simple, rapide et efficace.

Mention spéciale à Jag Saund, développeur chez Instagram, pour son talk intitulé “Concurrency doesn’t have to be hard: Kotlin Coroutines and Channels”. Si vous n’êtes toujours pas à l’aise avec les coroutines et que vous ne savez pas par où commencer, nous vous recommandons grandement de foncer voir ce dernier.

A travers le célèbre exemple de la machine à café dont on veut pouvoir paralléliser et synchroniser certaines tâches pour ainsi optimiser son efficience, Jag parvient à captiver notre attention par une recette simple mais malheureusement peu utilisée. Des slides de code claires présentant une progression bien dosée d’un code de base vers sa version finale, Jag au micro faisant office de fil-rouge entre ces dernières. Le tout agrémenté de live demo de chaque petit pas en avant de l’évolution du code directement sur Android Studio.

Un talk super intéressant sur les dessous de Kotlin présenté par Chat Haase & Romain Guy : “Kotlin under the Covers”. En regardant ce talk vous allez découvrir tout ce que Kotlin fait pour vous, et surtout découvrir des outils comme le Bytecode viewer, le Profiler et le Decompiler pour pouvoir comprendre tout ce qu’il se passe !

Mais pas que du natif

Le multiplateforme était aussi au rendez-vous, au total 3 conférences sur le sujet et les technologies mises en avant : Kotlin Native et Flutter.

Du multiplateforme avec Kotlin

Building a library for Android and iOS using Kotlin Multiplatform

Si vous vous demandez comment vous pourriez partager une bibliothèque sur différentes plateformes, ce premier talk par David González est là pour vous y aider.

Comment créer un projet Kotlin Multiplateform et quelles sont les différentes bibliothèques disponibles à ce jour : Ktor, Coroutines, SQLDelight... ? Le speaker n'a pas hésité à faire le tour du sujet par des exemples et du code en pointant du doigt les différents problèmes, tels que la difficulté de build et le support inégal entre les différentes plateformes (exemple avec les coroutines).

Le speaker a aussi parlé d’une certaine collaboration entre Touchlab et Square qui pourrait améliorer l’expérience développeur et nous affirme que la technologie ne cesse d’évoluer et serait tout aussi viable en production.

Avec Kotlin on va encore plus loin avec le talk “Kotlin end to end: du client au serveur” présenté par Jordan Tuffery et Julien Datour. Similaire au premier mais qui se différencie en nous parlant du développement côté serveur avec Ktor. L’application démo présentée lors de la conférence utilisait du Kotlin côté serveur et du Kotlin Native pour partager la logique. Seule l’UI était codée nativement donnant une architecture globale assez intéressante.

Flutter toujours d’actualité

Introduit l'année dernière mais pas forcément adapté à un public encore peu exposé à Flutter, l'équipe d'Android Makers rectifie le tir cette année en proposant un codelab de avec Pierre Tibulle, Romain Rastel et Horacio Gonzalez. Pour rappel, Flutter est une solution multiplateforme proposée par Google pour créer une application Android, iOS et par la suite le prochain système exploitation de Google : Fuchsia.

What else ?

Bien d’autres sujets ont été abordés en dehors des animations et de Kotlin. En voici notre sélection.

La gestion d’un parc d’appareil pour les pros

Vous êtes-vous déjà demandé comment gérer un parc d'appareils Android ? Chacun a sa méthode : un tableur, des post-its ou simplement regarder dans l'armoire d'appareils voir ce qui est disponible… Bruno Verachten nous propose une alternative dans son talk “The Android device farm that fits in a (cloudy) pocket”. Le principal avantage avec sa solution : utiliser les appareils de votre parc existant sans avoir à se déplacer. Concrètement, cela permet de savoir quel appareil est disponible via une simple page web. Et surtout, vous pouvez également manipuler un appareil de la même manière que Vysor et scrcpy, via un navigateur web, à distance. Le tout se fait via OpenSTF et un peu d’IoT. Le seul problème : cela est compliqué à mettre en place pour des profils orientés développement mobile... Mais ça nous faciliterait bien la vie.

Une alternative à la génération de code

(Android) Transformers - bytecode in disguise

Derrière ce titre cryptique Doug Stevenson -développeur Google de la Firebase team- nous explique quelle est la magie opérée par Firebase Performance Monitoring : comment font-ils pour traquer la durée des appels réseaux, sans ajouter de code ?

Un peu à la manière de ProGuard, tout se joue après que le Java/Kotlin soit transformé en Class/JAR, mais avant d’être packagé en fichiers DEX.

Pour cela ils ont créé une tâche Gradle custom en utilisant la Transform API. Si l’on comprend aisément la valeur ajoutée de cette API, notamment pour ajouter ou supprimer du code non destiné à partir en production, celle-ci semble toutefois peu abordable sans un investissement conséquent.

View a talk today to keep malicious code away

Une des grandes peurs d'aujourd'hui concerne la protection des données sensibles : RGPD. Votre appareil Android en contient et une application malveillante pourrait potentiellement les collecter. L'application que vous avez développée en fait-elle partie ?

Nous pensions avoir la réponse jusqu'à voir la conférence intitulée “I have no idea what my app is doing ¯\_(ツ)_/¯” où Nicola Corti décortique le fonctionnement de la résolution de dépendance Gradle, le tout en faisant un parallèle avec la nourriture pour que ça soit facile à digérer.

Il nous explique que, bien qu’il soit tentant d’ajouter des dépendances pour moins écrire de code, peu de gens en comprennent les mécanismes. Cette méconnaissance a permis le Cross Build Injection, consistant à injecter du code malicieux à l’insu des développeurs. Le speaker nous démystifie cela dans ce talk, en plus de donner des moyens de s'en prémunir.

Vous reprendrez bien un peu de MLKit ?

Do you want an easy way to add Machine Learning into your app?

Que serait une édition d’Android Makers sans un peu de machine learning ? Notre ancienne Octo Sandra Dupré est venue nous rappeler à quel point il est aujourd’hui facile d’en rajouter dans son application. Notamment via les différentes API proposées par Google dans MLKit : Image Labelling, Face Detection et Smart Reply entre autres.

Google Assistant

Integrating Android with the Google Assistant

Enfin, Elaine Dias Batista est venue nous parler du Google Assistant et de ses différentes utilisations possibles, que ça soit sur Android ou non. Elle nous fait un rapide tour d’horizon du sujet en passant par les App Actions, ou comment étendre la portée des actions de votre application à travers l’Assistant ou encore DialogFlow, plus axé machine learning et reconnaissance vocale. Le message principal de ce talk était : “Google Assistant is still new, think outside the box”.

Conclusion / Take away

On peut dire que cette 3ème édition d’Android Makers est encore une réussite. Avec un gros focus sur les vues et animations, il nous paraît improbable d’avoir des applications statiques sur le Google Play Store en 2019. Et la popularité de coroutines semble proposer un concurrent sérieux au populaire framework RxJava comme moyen de faire de l'asynchronisme sur mobile.

Autre point notable, l’IOT est beaucoup moins présent que l’année dernière. Mais cela fait sûrement écho à la volonté de Google de vouloir concentrer Android Things aux enceintes & écrans connectées.

Comme à l'accoutumée, Android Makers se clôt via une conférence humoristique que l'on vous conseille de regarder: “Comment organiser son entreprise” avec Romain Guy et Chet Haase :D

Une note pour finir sur la représentation des femmes qui nous est chère dans cet évènement. Si d’un point de vue qualitatif, plusieurs talks marquants ont été donnés par des femmes, d’un point de vue quantitatif elles n’ont donné que 13% de l’ensemble des présentations. Sur ce plan, espérons que la scène européenne embraye vite le pas d'événements comme la Google I/O 2019, bien plus paritaire.

Les talks évoqués dans cet article ainsi que tous les autres sont disponibles sur la chaîne Youtube d’Android Makers.