4 Déc 2015

Droidcon Paris 2015

Il y a deux semaines nous étions à la Droidcon Paris. Nous n’allons pas faire un compte rendu de chaque conférence mais plutôt un résumé de chacun des sujets abordés pendant ces deux jours !

Nous verrons les sujets suivants :

  • Performance d’une application Android
  • Le système de build
  • Tester son application Android
  • Langage et outils

2015-11-09 08.45.57

Performance d’une application Android

D’après les conférences suivantes :

  • Performance matter – Ran Nachmany, Google
  • Let’s sprinkle some #PerfMatters on our ViewGroups  François Blavoet, Deezer
  • Advanced Scrolling Techniques on Android – Cyril Mottier, Captain Train

Limitation matériel

Un téléphone a des limitations au niveau du réseau, de la batterie, du CPU et de la mémoire. Vous devez les économiser pour faire de votre application une super application.

Batterie

Pour économoser la batterie vous devez différer votre travail si vous n’avez pas besoin du résultat immédiatement. Vous pouvez utiliser les wake locks, et les regrouper, pour planifier votre travail. Une bonne pratique est d’utiliser un timeout quand vous acquérez un WakeLock pour être sur qu’il sera relâché même dans le cas où il y a une erreur.

Réseau

Pour  économiser le réseau vous devez préfétcher les donner que l’utilisateur pourrait utiliser et grouper les autres types de données.

Vous pouvez utiliser l’analytique pour savoir quelle quantité de données récupérer. L’effet de bord est que vous allez améliorer à la fois la batterie et l’UX de votre application.

Si vous voulez regrouper vos données vous pouvez empiler les requêtes et les dépiler quand le téléphone est moins utilisé en utilisant le JobScheduler ou le GcmNetworkManager (avant Lollipop).

Une autre bonne pratique est d’utiliser des FlatBuffers plutôt que du Json. Le Json est super parce qu’il est lisible par un humain mais il n’est pas optimisé pour une machine. Vous pouvez voir comment Facebook les a utilisé pour améliorer les performances de leur application sur leur blog technique: Improving Facebook’s performance on Android with FlatBuffers.

Mémoire

Les événements du Garbarge Collector diminuent le nombre d’image par seconde de votre application. Si vous voulez que votre application soit fluide à 60 fps vous devez limiter les événements du GC. Les actions les plus consommatrices sont :

  • la gestion des images : évitez les en utilisant Picasso ou Glide
  • utiliser des HashMap : utilisez des ArrayMap quand vous avez moins de 1000 objets ou des maps de maps
  • utiliser l’autoboxing : utilisez des types primitifs plutôt que des objets

Vues

Si vous voulez débugger vos vues figées vous pouvez utiliser Systrace. Il vous donnera des conseils sur ce qui peut mal se passer. Si vous voulez débugger vos vues vous pouvez utiliser le Hierarchy Viewer.

Une solution pour optimiser l’affichage de vos vues est de merger vos vues et de les positionner manuellement.

Le système de compilation

D’après les conférences suivantes :

  • Keynote – Evolution inside the build system – Eric Lafortune, GuardSquare
  • Squeezing the last drop of performance out of your Gradle builds – Madis Pink, ZeroTurnaround
  • Level up your Android Build – Florian Mierzejewski, Novoda

Un nouveau système de compilation

Google est en train de travailler sur un nouveau système de build composé de deux outils : Jack et Jill. Il s’agit du compilateur par défaut sur AOSP. Vous pouvez l’utiliser en ajouter useJack = true dans votre fichier gradle.

Jack compile le code source (.java) en bytecode dalvik (.dex) en une seule étape. Il n’a pas besoin d’utiliser de fichiers temporaires (Java bytecode et Java bytecode optimisé).

Jill converti les librairies (.class) en bytecode intermédaire et les caches.

Jack et Jill ne vont pas améliorer la vitesse de compilation mais vont optimiser la taille de l’application (-39% avec l’application Google I/O 2015) et va supporter Java 8 et les closures ! Par ailleurs ils n’amélioreront pas les performances au runtime. Vous devez toujours utiliser Proguard.

Optimisez votre compilation

Si votre compilation dure longtemps vous pouvez le mesurer avec les options “–dry-run” et “–profile”.

Quelques astuces générales pour l’améliorer :

  • Mettre Gradle à jour : à partir de la version 2.4 les builds sont mis en caches. Trouvez la version que vous souhaitez sur le site de Gradle
  • Mettre à jour Java
  • Utiliser un SSD car Gradle fait beaucoup d’I/O
  • Ajoutez –deamon pour réutiliser votre instance de Gradle
  • Ajouter –configure-on-demand si vous compilez plusieurs projets
  • Utilisez multidex avec un minSdk 21 sur les build de développement

Si votre compilation est toujours trop lent vous devez comprendre ce qui prend du temps. Par exemple :

  • Est-ce que vous modifiez dynamiquement une valeur avec buildConfigField (par exemple pour sauvegarder la date de compilation) ?
  • Pouvez-vous extraire du code vers un module et l’ajouter en tant que dépendance ?

Testez votre application Android

D’après les conférences suivantes :

  • Comment tester (vraiment) une application Android – Thomas Guerin, Deezer
  • Testez unitairement votre code, même votre UI ! – Stan Kocken, Freelance
  • Linty Fresh – Matthew Compton , Big Nerd Ranch

Les conférences précédentes détaillent de manière très précise comment tester votre application. Nous vous recommandons de regarder les présentations. Nous n’aurons pas la prétention de les résumer (voir les liens en fin d’article).

Vous pouvez aussi créer des Check Lint personnalisés pour valider la mise en place de bonnes pratiques que vous avez mis en place sur votre application, par exemple pour valider que vous n’utilisez pas d’enums. Un exemple de code est disponible sur GitHub.

Langage et outils

Kotlin

Kotlin était le sujet principal de la deuxième matinée. Il s’agit d’un nouveau langage qui s’intègre bien dans l’IDE, est concis et est léger. Il s’agit d’un langage de programmation fonctionnel. Ses principaux avantages sont le support des Lambda, l’ajout du null safety ainsi que la possibilité d’utiliser des extensions. Vous pouvez facilement l’intégrer dans votre application puisqu’il peut être mélangé à du Java.

Nous avons vu une démonstration de live coding sur comment créer une application de géolocalisation avec les Google Play Services en moins de 200 lignes de code. C’était vraiment impressionnant !

Android Data Binding

La librairie de Data Binding vous permet de lier des données à une vue directement depuis le XML. Elle vous permet aussi de facilement créer de nouveaux attributs, par exemple imageUrl sur une ImageView. Elle aide à supprimer beaucoup de code pour l’initialisation et le binding des données.

Cette librairie est encore en bêta et elle a plusieurs détracteurs comme Jake Wharthon. Si vous souhaitez quand même l’utiliser sa documentation est assez complète.

Conclusion

Ces deux jours étaient très intéressants et si vous n’avez pas eu l’occasion de venir je vous conseille de regarder les conférences sur YouTube.

Share