SlideShare une entreprise Scribd logo
Application Crash Report for Android
ZID Sonia – 26/12/2013

1
Plan de présentation
●

Oui il vous faut un outil de rapports d'erreur

●

ACRA : Application crash reports for Android

●

Top applications qui utilisent ACRA

●

Simple à intégrer

●

Les solutions de stockage et analyse

●

Acralyser

2
Oui il vous faut un outil de rapport
d'erreur
●

●

●

Votre application va planter. C'est sûr, oui je
suis sûr.
Vos tests se sont jamais suffisants
Vous ne pourrez jamais tester sur TOUS les
devices et versions d'Android.
3
Oui il vous faut un outil de rapport
d'erreur

Connaitre les défauts au plus tot pour les
corriger au plus vite
N'est ce pas !

4
Oui il vous faut un outil de rapport
d'erreur
Oui mais Google fournit déjà des rapports
d'erreur !
MAIS...
●

Les données sont limités

●

Dépendant du Play Store

●

Et pour les applications d'entreprise ?

5
Application Crash Report for Android
Idée initiale
●

●

●

Tout développeur devrait recevoir des rapports
d'erreur
Impact minimal sur l'application
Utilisation de Google Docs pour les rapports
d'erreur.
6
Application Crash Report for Android
Principe : UncaughtExceptionHandler
→ appelé par toute exception non intercepté
Installation : ajout d'une simple annotation sur l'instance
Application Principale
Compatibilité : avec toutes versions d'Android mais sait
collecter des données avec les API les plus récents.

7
Application Crash Report for Android
●

Interaction utilisateur
- Toast, Notification, Dialog, rapports silencieux

●

●

●

●

Rapports très détaillés sur le crash, le device avec lequel
l'application s'est arrété,...
On peut ajouter nos propres traces de débogage pour les
rapports.
S'il y a pas de couverture réseau, les rapports sont conservés
et envoyés plus tard.
On peut envoyer des rapports meme si l'application ne plante
pas.

8
Top applications qui utilisent ACRA

9
Simple à intégrer
Crash Reports in a Google Docs spreadsheet
●

●
●

Get http://acra.googlecode.com/files/acra-3.1.2.2.zip and open the
archive
Login to your Google Docs account
Import the CrashReports-template.csv contained in the archive (acra3.1.2.2/CrashReport/doc), with conversion enabled

●

Open the imported document

●

Rename it as you like

●

In the menu, click on Forms / Create form

●

Add anything in the form description just to enable the Save button

●

If you are using a private Google Apps domain, make sure to uncheck
the option "Require yourdomain.com sign-in to view this form."
10
Simple à intégrer
●

●

Save the form
Copy the formkey displayed in the link at the bottom of the form
creation page

●

Open your Eclipse project

●

Create a lib folder

●

Add the acra-3.1.2.2.jar from the archive (acra3.1.2.2/CrashReport/build) in the lib folder

●

Right-click on the jar file / add to build path

●

Create a new class in your package root

●

●

Give it a name like: MyApplication, make it extend
android.app.Application
Above the declaration of the MyApplication class, add the
@ReportsCrashes annotation with your Google Docs form Id as a
parameter

11
Simple à intégrer
package com.example.test
import org.acra.ACRA;
import org.acra.ReportField;
import org.acra.ReportingInteractionMode;
import org.acra.annotation.ReportsCrashes;
import android.app.Application;
@ReportsCrashes (formKey = "dGVacG0ydVHnaNHjRjVTUTEtb3FPWGc6MQ",, customReportContent = {
ReportField.APP_VERSION_CODE, ReportField.APP_VERSION_NAME,
ReportField.ANDROID_VERSION, ReportField.PHONE_MODEL,
ReportField.CUSTOM_DATA, ReportField.STACK_TRACE }, mode = ReportingInteractionMode.TOAST,
resToastText = R.string.crash_toast_text)
public class MyApplication extends Application {
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
ACRA.init(this);
}
}

12
Simple à intégrer
APP_VERSION_CODE=1
●
APP_VERSION_NAME=1.0
●
ANDROID_VERSION=4.4.2
●
PHONE_MODEL=Nexus 4
●
CUSTOM_DATA=
●
STACK_TRACE=java.lang.NumberFormatException: Invalid int: ""
●
at java.lang.Integer.invalidInt(Integer.java:137)
●
at java.lang.Integer.parseInt(Integer.java:358)
●
at java.lang.Integer.parseInt(Integer.java:331)
●
at
com.exemple.test.activity.ListAudioGuideExpositionActivity$23.onClick(ListAudioGuid
eExpositionActivity.java:578)
●
at android.view.View.performClick(View.java:4438)
●
at android.view.View$PerformClick.run(View.java:18422)
●
at android.os.Handler.handleCallback(Handler.java:733)
●
at android.os.Handler.dispatchMessage(Handler.java:95)
●
at android.os.Looper.loop(Looper.java:136)
●
at android.app.ActivityThread.main(ActivityThread.java:5017)
●
at java.lang.reflect.Method.invokeNative(Native Method)
●
at java.lang.reflect.Method.invoke(Method.java:515)
●
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
●
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
● at dalvik.system.NativeStart.main(Native Method)
●

mode = ReportingInteractionMode.TOAST

13
Simple à intégrer

@ReportsCrashes(formKey="dGVacG0ydVHnaNHjRjVTUTEtb3FPWGc6MQ,
mode = ReportingInteractionMode.Notification ,
resToastText = R.string.crash_toast_text)
public class MyApplication extends Application {
...

14
Les solutions de stockage et
analyse
Google Docs Forms
●

Pratique pour démarrer

●

Interface pas vraiment adaptée

●

Google a demandé l'arret de la soumission
des données via Forms.

Déconseillée
15
Les solutions de stockage et
analyse
Solutions commerciales/propriétaires

16
Les solutions de stockage et
analyse
Solutions commerciales/propriétaires
●

Avantage

Interfaces soignées
●

Inconvénients

Peu de données
Persistance des données limités dans le temps
Tarification
SAAS → Les données sont chez un tiers et y resteront 17
Les solutions de stockage et
analyse
Autre solutions
●

Un Script PHP de 10 lignes peut etre suffisant

●

Sentry - Python + MySQL/PgSQL

solutions installable sur votre infra
proposent un hébergement payant
●

Acralyzer
18
Acralyser
Nouveau backend officiel pour ACRA
Pallier au retrait de la solution Google Forms
●

Création / suppression de rapports

●

Visualisation de TOUTES les données

●

Tri/Recherche

Solution FULL opensource
●

Pas de dépendance vis à vis d'un service

●

Facile à déployer "chez soi"

Robuste et Scalable
19
Acralyser
Installation :
1 - réplication de 2 couchapps
●

http://get.acralyzer.com/distrib-acra-storage

●

http://get.acralyzer.com/distrib-acralyzer

2 - Création d'un utilisateur reporter
●

Depuis l'interface d'Acralyzer

3 - Configuration d'ACRA
20
Acralyser
Fonctionnalités implémentées
- Dashboard:
●

rapports par mois/jour/heure/seconde

●

rapports par version Android/API/Applicative

●

rapports par device

- 10 derniers bugs et rapports :
●

version applicative

●

exception + classe / ligne

●

root exception + classe / ligne

21
Acralyser
Fonctionnalités implémentées
- Bugs :
●

Etat résolu ou non

●

Champ commentaires

●

Liste des rapports

●

Liste des utilisateurs impactés

- Rapports :
●

●

Filtre par version application ou Android
Recherche textuelle

22
Acralyser

23
Références
●

https://code.google.com/p/acra/wiki/ACRA3HowTo

●

https://github.com/ACRA/acra

●

https://plus.google.com/+Acralyzer/posts

●

https://github.com/ACRA/acra/wiki/AdvancedUsage#contents

24
Merci de votre attention

25

Contenu connexe

Similaire à Acra

PAUG - Intégration Continue - Décembre 2013
PAUG - Intégration Continue - Décembre 2013PAUG - Intégration Continue - Décembre 2013
PAUG - Intégration Continue - Décembre 2013
Aurélien Guillard
 
Bootcamp d'Initiation à Android - 2013/11/30
Bootcamp d'Initiation à Android  - 2013/11/30Bootcamp d'Initiation à Android  - 2013/11/30
Bootcamp d'Initiation à Android - 2013/11/30
Horacio Gonzalez
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
Ludovic Piot
 
Evolutions scub foundation 3.0 = 4.0
Evolutions scub foundation 3.0 =  4.0Evolutions scub foundation 3.0 =  4.0
Evolutions scub foundation 3.0 = 4.0
adrienhautot
 

Similaire à Acra (20)

Prérequis au développement google android
Prérequis au développement google androidPrérequis au développement google android
Prérequis au développement google android
 
Paris Android User Group
Paris Android User GroupParis Android User Group
Paris Android User Group
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
PAUG - Intégration Continue - Décembre 2013
PAUG - Intégration Continue - Décembre 2013PAUG - Intégration Continue - Décembre 2013
PAUG - Intégration Continue - Décembre 2013
 
ACRA - Présentation PAUG Avril 2011
ACRA - Présentation PAUG Avril 2011ACRA - Présentation PAUG Avril 2011
ACRA - Présentation PAUG Avril 2011
 
Tutorial android - créer des apps
Tutorial android - créer des appsTutorial android - créer des apps
Tutorial android - créer des apps
 
Tutorial android
Tutorial androidTutorial android
Tutorial android
 
GDG Rennes - Bootcamp Initiation Android - Théorie
GDG Rennes - Bootcamp Initiation Android -  ThéorieGDG Rennes - Bootcamp Initiation Android -  Théorie
GDG Rennes - Bootcamp Initiation Android - Théorie
 
Bootcamp d'Initiation à Android - 2013/11/30
Bootcamp d'Initiation à Android  - 2013/11/30Bootcamp d'Initiation à Android  - 2013/11/30
Bootcamp d'Initiation à Android - 2013/11/30
 
Ionic
IonicIonic
Ionic
 
Angular développer des applications .pdf
Angular développer des applications .pdfAngular développer des applications .pdf
Angular développer des applications .pdf
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Android NDK
Android   NDKAndroid   NDK
Android NDK
 
Contrôler votre matériel par les apps - JDLL
Contrôler votre matériel par les apps - JDLLContrôler votre matériel par les apps - JDLL
Contrôler votre matériel par les apps - JDLL
 
Dossier de plan_de_tests_v1.00
Dossier de plan_de_tests_v1.00Dossier de plan_de_tests_v1.00
Dossier de plan_de_tests_v1.00
 
Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016
 
Evolutions scub foundation 3.0 = 4.0
Evolutions scub foundation 3.0 =  4.0Evolutions scub foundation 3.0 =  4.0
Evolutions scub foundation 3.0 = 4.0
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
 

Plus de ODC Orange Developer Center

Plus de ODC Orange Developer Center (20)

Lightning Talks Réalité Augmentée
 Lightning Talks Réalité Augmentée Lightning Talks Réalité Augmentée
Lightning Talks Réalité Augmentée
 
Graphiste vs dévelopeur de Noha Jaafar
Graphiste vs dévelopeur de Noha JaafarGraphiste vs dévelopeur de Noha Jaafar
Graphiste vs dévelopeur de Noha Jaafar
 
Tendances des applications mobiles en 2014 de Noha Jaafar
Tendances des applications mobiles en 2014 de Noha JaafarTendances des applications mobiles en 2014 de Noha Jaafar
Tendances des applications mobiles en 2014 de Noha Jaafar
 
Countly
CountlyCountly
Countly
 
Owasp
OwaspOwasp
Owasp
 
Frameworks de développement Mobile
Frameworks de développement MobileFrameworks de développement Mobile
Frameworks de développement Mobile
 
Les bibliothèques sous Android
Les bibliothèques sous AndroidLes bibliothèques sous Android
Les bibliothèques sous Android
 
Les Fragments
Les FragmentsLes Fragments
Les Fragments
 
Sencha Touch
Sencha TouchSencha Touch
Sencha Touch
 
Personnalisation bouton et animations Android
Personnalisation bouton et animations AndroidPersonnalisation bouton et animations Android
Personnalisation bouton et animations Android
 
Android Device Monitor
Android Device MonitorAndroid Device Monitor
Android Device Monitor
 
Monkey & Monkey Runner
Monkey & Monkey RunnerMonkey & Monkey Runner
Monkey & Monkey Runner
 
Itinéraire sur Google Maps
Itinéraire sur Google MapsItinéraire sur Google Maps
Itinéraire sur Google Maps
 
Partage sur les réseaux sociaux
Partage sur les réseaux sociauxPartage sur les réseaux sociaux
Partage sur les réseaux sociaux
 
Shared Preferences
Shared PreferencesShared Preferences
Shared Preferences
 
Action Bar - AB & ActionBarSherlock - ABS
Action Bar - AB & ActionBarSherlock - ABSAction Bar - AB & ActionBarSherlock - ABS
Action Bar - AB & ActionBarSherlock - ABS
 
Upload - Download
Upload - DownloadUpload - Download
Upload - Download
 
Upload - Download
Upload - DownloadUpload - Download
Upload - Download
 
Sensors
SensorsSensors
Sensors
 
Framework php « Codeignitor »
Framework php « Codeignitor » Framework php « Codeignitor »
Framework php « Codeignitor »
 

Acra

  • 1. Application Crash Report for Android ZID Sonia – 26/12/2013 1
  • 2. Plan de présentation ● Oui il vous faut un outil de rapports d'erreur ● ACRA : Application crash reports for Android ● Top applications qui utilisent ACRA ● Simple à intégrer ● Les solutions de stockage et analyse ● Acralyser 2
  • 3. Oui il vous faut un outil de rapport d'erreur ● ● ● Votre application va planter. C'est sûr, oui je suis sûr. Vos tests se sont jamais suffisants Vous ne pourrez jamais tester sur TOUS les devices et versions d'Android. 3
  • 4. Oui il vous faut un outil de rapport d'erreur Connaitre les défauts au plus tot pour les corriger au plus vite N'est ce pas ! 4
  • 5. Oui il vous faut un outil de rapport d'erreur Oui mais Google fournit déjà des rapports d'erreur ! MAIS... ● Les données sont limités ● Dépendant du Play Store ● Et pour les applications d'entreprise ? 5
  • 6. Application Crash Report for Android Idée initiale ● ● ● Tout développeur devrait recevoir des rapports d'erreur Impact minimal sur l'application Utilisation de Google Docs pour les rapports d'erreur. 6
  • 7. Application Crash Report for Android Principe : UncaughtExceptionHandler → appelé par toute exception non intercepté Installation : ajout d'une simple annotation sur l'instance Application Principale Compatibilité : avec toutes versions d'Android mais sait collecter des données avec les API les plus récents. 7
  • 8. Application Crash Report for Android ● Interaction utilisateur - Toast, Notification, Dialog, rapports silencieux ● ● ● ● Rapports très détaillés sur le crash, le device avec lequel l'application s'est arrété,... On peut ajouter nos propres traces de débogage pour les rapports. S'il y a pas de couverture réseau, les rapports sont conservés et envoyés plus tard. On peut envoyer des rapports meme si l'application ne plante pas. 8
  • 9. Top applications qui utilisent ACRA 9
  • 10. Simple à intégrer Crash Reports in a Google Docs spreadsheet ● ● ● Get http://acra.googlecode.com/files/acra-3.1.2.2.zip and open the archive Login to your Google Docs account Import the CrashReports-template.csv contained in the archive (acra3.1.2.2/CrashReport/doc), with conversion enabled ● Open the imported document ● Rename it as you like ● In the menu, click on Forms / Create form ● Add anything in the form description just to enable the Save button ● If you are using a private Google Apps domain, make sure to uncheck the option "Require yourdomain.com sign-in to view this form." 10
  • 11. Simple à intégrer ● ● Save the form Copy the formkey displayed in the link at the bottom of the form creation page ● Open your Eclipse project ● Create a lib folder ● Add the acra-3.1.2.2.jar from the archive (acra3.1.2.2/CrashReport/build) in the lib folder ● Right-click on the jar file / add to build path ● Create a new class in your package root ● ● Give it a name like: MyApplication, make it extend android.app.Application Above the declaration of the MyApplication class, add the @ReportsCrashes annotation with your Google Docs form Id as a parameter 11
  • 12. Simple à intégrer package com.example.test import org.acra.ACRA; import org.acra.ReportField; import org.acra.ReportingInteractionMode; import org.acra.annotation.ReportsCrashes; import android.app.Application; @ReportsCrashes (formKey = "dGVacG0ydVHnaNHjRjVTUTEtb3FPWGc6MQ",, customReportContent = { ReportField.APP_VERSION_CODE, ReportField.APP_VERSION_NAME, ReportField.ANDROID_VERSION, ReportField.PHONE_MODEL, ReportField.CUSTOM_DATA, ReportField.STACK_TRACE }, mode = ReportingInteractionMode.TOAST, resToastText = R.string.crash_toast_text) public class MyApplication extends Application { @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); ACRA.init(this); } } 12
  • 13. Simple à intégrer APP_VERSION_CODE=1 ● APP_VERSION_NAME=1.0 ● ANDROID_VERSION=4.4.2 ● PHONE_MODEL=Nexus 4 ● CUSTOM_DATA= ● STACK_TRACE=java.lang.NumberFormatException: Invalid int: "" ● at java.lang.Integer.invalidInt(Integer.java:137) ● at java.lang.Integer.parseInt(Integer.java:358) ● at java.lang.Integer.parseInt(Integer.java:331) ● at com.exemple.test.activity.ListAudioGuideExpositionActivity$23.onClick(ListAudioGuid eExpositionActivity.java:578) ● at android.view.View.performClick(View.java:4438) ● at android.view.View$PerformClick.run(View.java:18422) ● at android.os.Handler.handleCallback(Handler.java:733) ● at android.os.Handler.dispatchMessage(Handler.java:95) ● at android.os.Looper.loop(Looper.java:136) ● at android.app.ActivityThread.main(ActivityThread.java:5017) ● at java.lang.reflect.Method.invokeNative(Native Method) ● at java.lang.reflect.Method.invoke(Method.java:515) ● at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) ● at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) ● at dalvik.system.NativeStart.main(Native Method) ● mode = ReportingInteractionMode.TOAST 13
  • 14. Simple à intégrer @ReportsCrashes(formKey="dGVacG0ydVHnaNHjRjVTUTEtb3FPWGc6MQ, mode = ReportingInteractionMode.Notification , resToastText = R.string.crash_toast_text) public class MyApplication extends Application { ... 14
  • 15. Les solutions de stockage et analyse Google Docs Forms ● Pratique pour démarrer ● Interface pas vraiment adaptée ● Google a demandé l'arret de la soumission des données via Forms. Déconseillée 15
  • 16. Les solutions de stockage et analyse Solutions commerciales/propriétaires 16
  • 17. Les solutions de stockage et analyse Solutions commerciales/propriétaires ● Avantage Interfaces soignées ● Inconvénients Peu de données Persistance des données limités dans le temps Tarification SAAS → Les données sont chez un tiers et y resteront 17
  • 18. Les solutions de stockage et analyse Autre solutions ● Un Script PHP de 10 lignes peut etre suffisant ● Sentry - Python + MySQL/PgSQL solutions installable sur votre infra proposent un hébergement payant ● Acralyzer 18
  • 19. Acralyser Nouveau backend officiel pour ACRA Pallier au retrait de la solution Google Forms ● Création / suppression de rapports ● Visualisation de TOUTES les données ● Tri/Recherche Solution FULL opensource ● Pas de dépendance vis à vis d'un service ● Facile à déployer "chez soi" Robuste et Scalable 19
  • 20. Acralyser Installation : 1 - réplication de 2 couchapps ● http://get.acralyzer.com/distrib-acra-storage ● http://get.acralyzer.com/distrib-acralyzer 2 - Création d'un utilisateur reporter ● Depuis l'interface d'Acralyzer 3 - Configuration d'ACRA 20
  • 21. Acralyser Fonctionnalités implémentées - Dashboard: ● rapports par mois/jour/heure/seconde ● rapports par version Android/API/Applicative ● rapports par device - 10 derniers bugs et rapports : ● version applicative ● exception + classe / ligne ● root exception + classe / ligne 21
  • 22. Acralyser Fonctionnalités implémentées - Bugs : ● Etat résolu ou non ● Champ commentaires ● Liste des rapports ● Liste des utilisateurs impactés - Rapports : ● ● Filtre par version application ou Android Recherche textuelle 22
  • 25. Merci de votre attention 25