Skip to content

Stacktraces distantes sous Android

Le développement d’applications mobiles introduit de nouvelles problématiques lors du débogage.
Parmi celles-ci, la mise en place d’un système de consultation des stacktraces à distance est un passage quasi obligé.

Heureusement, deux outils sont disponibles pour effectuer cette tâche facilement.

Android remote stacktrace

Cette première bibliothèque est simple à utiliser; elle nécessite cependant d’avoir un serveur à disposition pour héberger un script php fourni.

Ce script est chargé de gérer l’enregistrement de l’exception ou son envoi par mail (ou toute autre action que vous désirez prendre en charge).

La mise en place de ce système est très simple :

  • Installez la bibliothèque dans votre classpath
  • Modifiez votre fichier AndroidManifest.xml pour y faire figurer la ligne :
    <uses-permission android:name="android.permission.INTERNET" />
    
  • Modifiez la méthode onCreate de votre activité pour y ajouter :
    ExceptionHandler.register(this, "http://votre.serveur/votreChemin");
    

    (où votreChemin est le chemin du script php suivant)

  • Installez ce script php sur votre serveur et modifiez le pour qu’il enregistre les stacktraces dans un fichier ou vous les envoie par mail

Et c’est tout. Désormais, chaque exception non catchée générera un log ou un mail. Simple et efficace.

Cependant, la stacktrace seule est parfois un peu limitée. En effet, Android étant multi-terminal, certaines Exceptions peuvent n’apparaître que sur un terminal donné, il faut alors plus d’informations pour diagnostiquer le problème; c’est là qu’intervient ACRA.

ACRA

Le système de log d’ACRA n’est autre qu’un Google Spreadsheet. A chaque crash, une nouvelle ligne s’ajoute au document.

Cette ligne comprend de nombreux champs dont la stacktrace, mais aussi, le niveau d’API, le modèle du téléphone, la résolution de l’écran, etc … Tout ce qu’il faut pour diagnostiquer le problème !

D’autre part, ACRA est fortement paramétrable et vous permet de modifier les données remontées mais aussi de présenter un écran de saisie lors d’un crash :

Installation d’ACRA (cf. documentation):

Voici un résumé rapide des différentes étapes d’installation :

  • Téléchargez l’archive
  • Importez le fichier CrashReports-template.csv fourni dans Google Docs
  • Créez un formulaire dessus et copiez la valeur formkey
  • Ajoutez acra dans vos dépendances Eclipse
  • Ajoutez l’anotation @ReportsCrashes à la définition de votre sous-classe d’Application et passez la formKey en paramètre :
        import org.acra.*;
        import org.acra.annotation.*;
    
        @ReportsCrashes(formKey = "dGVacG0ydVHnaNHjRjVTUTEtb3FPWGc6MQ")
        public class MyApplication extends Application {
        }
    
  • Surchargez la méthode onCreate() pour lancer l’initialisation d’ACRA :
        @Override
        public void onCreate() {
            // The following line triggers the initialization of ACRA
            ACRA.init(this);
            super.onCreate();
        }
    
  • Donnez les droits d’accès à internet à votre application

Voilà, la prochaine fois que l’application crashera, vous aurez une nouvelle ligne dans votre Google spreadsheet !

Published inAndroidGoogleProgrammation
Loading Facebook Comments ...

Be First to Comment

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.