• 30 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 21/05/2021

Utilisez un outil de gestion des traces

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Introduction

La vie est belle, vous développez une nouvelle application mobile. Vous ajoutez une nouvelle fonctionnalité, et vous avez envie de la tester. Pour vous assurer que tout fonctionne correctement, vous souhaitez faire parler votre application. C'est à dire qu'elle puisse vous dire où elle en est, et vérifier si les traitements effectués sont corrects. Par exemple :

  • La nouvelle activité a été lancée ;

  • Le fichier a été téléchargé ;

  • Les préférences ont été mises à jour.

Dans ce chapitre, nous allons découvrir les outils mis à disposition par Android pour gérer les traces (ou logs, en anglais). Mais pour que ce soit plus fun, il va nous falloir une application de test. Je vous invite pour cela à télécharger le code source de l'application MemeTastic. Elle vous permettra de créer vos propres memes. Je suis un grand fan des memes, j'espère que vous aussi !

Activation du mode développeur

Si vous utilisez un équipement réel pour tester votre application, il est probable que vous deviez activer le mode Developer. Pour ce faire, je vous invite à effectuer la manipulation suivante sur votre tablette ou votre téléphone :

  • Ouvrez l'application Paramètres (ou Settings en anglais) ;

  • Si vous êtes sur Android 8.0 ou supérieur : sélectionnez Système (ou System en anglais) ;

  • Tout en bas, cliquez sur À propos du téléphone (ou About device en anglais) ;

  • Tout en bas, appuyez sept fois sur Numéro de build (ou Build number en anglais). Non, ce n'est pas une blague ;

  • Revenez à l'écran précédent, et cliquez sur Options pour les développeurs (Developer options en anglais) ;

  • Activez l'option Débogage USB (ou USB debugging en anglais).

Pour plus d'information, n'hésitez pas à consulter cette page.

Présentation des outils

Pour générer des traces et les afficher, Android propose deux outils. Le premier est la classe Java Log. Cette classe fait partie du SDK Android. Elle permet de demander au système d'afficher une trace. Le second est l'utilitaire Logcat. C'est un programme qui se lance en ligne de commande. Il permet d'accéder à l'ensemble des traces générées par le système.

L'utilitaire Logcat

Avant de commencer à tracer, voyons tout d'abord comment accéder aux traces. L'outil standard pour accéder aux traces d'Android s'appelle logcat. C'est un utilitaire qui se lance en ligne de commande, de deux façons différentes :

  • Soit via la commande adb ;

  • Soit en ouvrant un shell sur l'émulateur ou sur l'équipement, puis en invoquant la commande logcat.

Cette méthode d'accès est intéressante si vous êtes un fan de la ligne de commande. Dans ce cas, je vous invite à lire la documentation d'adb. Dans le cadre de ce cours, nous allons utiliser une méthode plus simple : la consultation des traces via Android Studio. Android Studio appelle automatiquement la commande logcat à notre place et nous en affiche le contenu.

Pour accéder à la fenêtre des traces, rendez-vous dans Android Studio, puis :

  1. Cliquez en bas sur le bouton Android Monitor ;

  2. Assurez-vous que l'onglet logcat soit sélectionné ;

  3. Admirez le contenu de la fenêtre avec vos yeux ébahis.

Si vous avez un équipement branché et un émulateur lancé, vous verrez apparaître les deux dans la liste des équipements. Assurez-vous de sélectionner le bon, suivant la cible sur laquelle vous souhaitez lancer votre application :

Lorsque vous lancez l'application, vous devez voir apparaître le processus correspondant à côté de la cible (l'émulateur ou l'équipement réel). Si ce n'est pas le cas, sélectionnez-le :

Voilà, vous avez toutes les traces émises par l'application sous les yeux. Voici un exemple de trace :

09-28 01:43:33.321 13801-13801/io.github.gsantner.memetastic I/InstantRun: starting instant run server: is main process

Chaque trace est représentée suivant le même format :

  1. La date d'enregistrement de la trace, sous la forme mois-jour ;

  2. L'heure d'enregistrement de la trace, sous la forme heures:minutes:secondes.millisecondes ;

  3. L'identifiant du processus, suivi de l'identifiant du thread, suivi de l'identifiant l'application, sous la forme id_processus-id_thread/id_app ;

  4. Le niveau de priorité de la trace, suivi d'un tag, sous la forme priorité/tag: ;

  5. L'information tracée.

La date, l'heure et les identifiants sont automatiquement générés par le système. Le reste est déterminé par le développeur, comme nous allons le voir ci-dessous.

La classe Log

Pour générer une classe depuis le code de notre application, il faut utiliser la classe Log. La méthode standard de trace est la suivante :

int println(int priority, String tag, String msg);

Le premier paramètre correspond au niveau de sévérité de la trace. Les différentes valeurs possibles sont :

  • VERBOSE : pour tracer des informations très triviales (exemples : la valeur d'une variable, l'âge de Justin Bieber) ;

  • DEBUG : pour tracer des informations utiles en phase de développement (exemples : le résultat d'un calcul, le temps que vous avez passé devant votre ordinateur) ;

  • INFO : pour tracer une information d'usage courant (exemples : le téléchargement réussi des données de l'utilisateur, le nombre de cafés que vous avez bus) ;

  • WARN : pour tracer un problème non bloquant (exemples : la perte temporaire de connectivité, votre belle-mère qui vient déjeuner) ;

  • ERROR : pour tracer un problème bloquant (exemples : serveur inaccessible, pizzeria fermée) ;

  • ASSERT : pour tracer un problème inattendu (exemple : les extra-terrestres ont débarqué sur terre).

Le deuxième paramètre correspond au contexte de la trace. C'est une chaîne de caractères. Vous êtes libres de préciser ce que vous voulez. Généralement, le développeur précise le nom de la classe, afin de se repérer facilement dans la lecture des traces. Mais nous verrons un peu plus loin que ce n'est pas toujours l'information la plus pertinente à mettre.

Le troisième paramètre correspond au texte que vous souhaitez afficher. Idem, vous êtes libres d'afficher les informations que vous voulez. Avec éventuellement avec des paramètres complémentaires (la valeur d'une variable par exemple).

Sachant que vous avez été très attentifs, vous vous dites : chic, je vais tracer un événement majeur avec la méthode suivante :

Log.println(Log.WARN, "MainActivity", "All the cookies have been eaten by " + culpritName);

En fait, pas du tout. Ô rage ! Ô désespoir ! Désolé de vous avoir menés en bateau. Vous pourriez tout à fait appeler la méthode println(). Mais Android vous facilite la tâche en vous proposant une méthode spécifique pour chaque niveau de sévérité de trace. Vous allez plutôt utiliser les méthodes suivantes :

Niveau

Méthode

VERBOSE

v(String tag, String message)

DEBUG

d(String tag, String message)

INFO

i(String tag, String message)

WARN

w(String tag, String message)

ERROR

e(String tag, String message)

ASSERT

wtf(String tag, String message)

Voici quelques exemples d'appel aux différentes méthodes de traces :

Log.d("MainActivity", "Entering onCreate()");
Log.i("MainActivity", "User preferences saved successfully");
Log.e("MainActivity", "User is not authenticated!");

Conclusion

Vous connaissez maintenant le mécanisme standard de gestion des traces d'Android. Amusez-vous à ajouter différentes traces dans l'application MemeTastic, afin de vérifier son comportement. Dans le prochain chapitre, nous creuserons un peu plus ce sujet, notamment en termes de personnalisation d'affichage et de bonnes pratiques.

Exemple de certificat de réussite
Exemple de certificat de réussite