Votre application Android FirebaseOC est enfin terminée et son intégration avec Firebase est plutôt réussie !
Afin de compléter cette intégration, je vous propose dans ce dernier chapitre de découvrir un produit très pratique pour améliorer la qualité de nos applications mobiles en production : Crashlytics.
Ainsi, plus besoin d'avoir l'utilisateur physiquement présent à côté de nous pour comprendre l'origine d'une panne, il nous suffit de lire et d'analyser le rapport d'erreur envoyé par Crashlytics.
Créé en mai 2011, Crashlytics fut très vite adopté par la communauté mobile et intégré sur des millions d'applications mobiles. L'entreprise s'imposant rapidement sur le marché, elle fut rachetée par Twitter pour un montant de 100 millions de dollars en 2013 pour être intégré à leur plateforme Fabric. En janvier 2017, Google a annoncé avoir acquis à son tour Fabric (et par conséquent Crashlytics) pour fusionner l'ensemble des produits à sa plateforme Firebase.
Installez Crashlytics
Place maintenant à l'installation de Crashlytics. Comme d'habitude, nous allons modifier nos fichiers Gradle afin d'installer les dépendances nécessaires.
Extrait de build.gradle (au niveau du projet) :
buildscript {
...
dependencies {
...
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.6.1'
}
}
Extrait de build.gradle (au niveau de l'application) :
apply plugin: 'com.google.firebase.crashlytics'
dependencies {
...
implementation 'com.google.firebase:firebase-crashlytics'
implementation 'com.google.firebase:firebase-analytics'
}
Synchronisez votre projet et c'est tout ! Le plus gros du travail vient d'être fait.
Maintenant, dès qu'un crash se produira, un rapport d'erreur sera automatiquement envoyé sur Firebase. Vous n'aurez plus qu'à le consulter puis identifier précisément l'origine du bug.
Testez l'implémentation Crashlytics
A quoi ressemble un rapport d'erreur Crashlytics ?
Rendez-vous sur la page d'administration de Firebase, onglet Crashlytics, cliquez sur le bouton "Activer Crashlytics"
Vous devriez ensuite avoir la page suivante, avec le chargement :
Gardez l'onglet ouvert et revenez à votre application Android et modifiez l'activité MainActivity comme ce qui suit.
Extrait de MainActivity :
public class MainActivity extends BaseActivity<ActivityMainBinding> {
...
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
throw new RuntimeException("Test Crash"); // Force a crash
...
}
...
}
Explications : Nous avons juste ajouté une ligne de code simulant un crash afin de forcer notre application à planter et obliger le module Crashlytics à envoyer un premier rapport d'erreur sur Firebase.
Lancez votre application Android, celle-ci devrait planter.
Et voilà !
Lancez plusieurs fois votre application afin de forcer l'envoi de plusieurs rapports d'erreur. Puis, je vous conseille également de supprimer la ligne throw new RuntimeException("Test Crash");
de votre activité MainActivity, auquel cas votre application plantera systématiquement dès son ouverture.
Analysez un rapport d'erreur
Place à l'analyse ! Revenez à l'interface web de Crashlytics. Cliquez sur la ligne correspondant au plantage que nous venons de simuler :
Une nouvelle page de détails s'affiche et nous obtenons une vue beaucoup plus riche en informations relatives à notre problème.
Nous pouvons voir sur cette page la trace de la pile (ou "Stack Trace" en anglais) qui a été envoyée par notre application Android.
Celle-ci comporte toutes les informations techniques pour identifier l'origine du problème : il semblerait ici qu'une exception fatale RuntimeException ait été levée. Cette erreur a été produite par la ligne 30 de la classe CrashTest.java (faisant partie du SDK de Crashlytics que nous avons installé précédemment). Il semblerait également que nous ayons appelé cette classe via notre activité MainActivity.java à la ligne 45.
Ah super tout ça ! Mais j'aimerais maintenant avoir un peu plus d'informations à propos de l'appareil mobile qui a causé le crash.
Bien sûr ! Eh bien vous n'avez qu'à cliquer sur l'onglet "Données" afin d'afficher les informations relatives à un appareil mobile sur lequel s'est produit le plantage. Un jeu d'enfant.
En résumé
Crashlytics (ou n'importe quel autre système de bug tracking) permet de débugger facilement son application et de corriger les problèmes divers.
Apprenez à lire un rapport d'erreur et à trouver les informations utiles à la résolution de bugs.
Et voilà, ce cours s'achève enfin ! Vous devez être très fiers de ce que vous venez d'accomplir !
Vous savez maintenant créer un Backend complet sous Firebase. Vous avez appris à :
déployer un système d'authentification complet,
sauvegarder et récupérer des données en ligne en temps réel,
envoyer et stocker des images dans un espace de stockage dédié,
et même diffuser des messages de notification.
Plus rien ne peut maintenant vous arrêter pour créer le prochain Facebook ou Instagram. En tout cas, c'est tout le bien que je vous souhaite !
Ne vous reposez cependant pas sur vos lauriers, et pensez à pratiquer, pratiquer et encore pratiquer afin que développer à l'aide de Firebase devienne aussi naturel que respirer.
A très bientôt dans un prochain cours !