Aller au contenu

ACRA - comment récupérer simplement les infos de crash d'appli


Nivek

Recommended Posts

Salut Nivek !

As-tu eu des retours de ta nouvelle version ?

As-tu une idée de quand cette version sera en "prod" ? ;)

Pour ma part, tu es au courant des tests que j'ai fait avec, et j'attends juste la version officielle pour publier une mise à jour de mon appli :)

Merci en tout cas !

Lien vers le commentaire
Partager sur d’autres sites

Oui, j'ai fait une 2.0.3 suite à des retours sur le google group android-dev:

- bugfix: les rapports n'etaient pas envoyés si le manifest n'avait pas de versionName (rare)

- ajout d'une methode handleSilentException pour forcer un rapport custom silencieux même avec les notifs activées

Je pense qu'on va pouvoir sortir de la phase de tests dans les prochains jours. Pour info la v2.0.* a été téléchargée 23 fois.

Modifié par Nivek
Lien vers le commentaire
Partager sur d’autres sites

J'avais intégré la version 1 dans mon appli EmailAlbum sur le market il y a presque 1 mois.

Résultat: version avec une évolution et beaucoup de bugfixes publiée hier matin avec ACRA v2 en mode TOAST et possibilité de désactiver l'envoi de rapports dans les settings.

conséquence : une vingtaine de rapports reçus dans la journée, deux bugs corrigés ce matin (dont le plus gros pour les versions 1.5/1.6 d'android) et version corrective publiée 24h après la version d'hier. Sur le market : pas de nouveaux rapports reçus.... 1 nouveau commentaire qui indique un bug alors qu'il s'agit d'une fonctionnalité mal comprise.

;-)

Modifié par Nivek
Lien vers le commentaire
Partager sur d’autres sites

Bon, comme la v2 a été téléchargée plus de 20 fois au total et que je n'attends plus particulièrement de retours en dehors de ceux que j'ai déjà eu, j'ai passé la v2.0.3-test en v2.0.3 et mis à jour le site du projet.

La v2 est donc maintenant la version stable officielle d'ACRA.

Merci à tous pour votre aide ;-)

Une prochaine évol pourrait être d'ajouter la possibilité de montrer à l'utilisateur le contenu du rapport avant de l'envoyer, à l'image de ce qui se fait sur le reporting natif.... mais bon je rebascule mes priorités sur mon appi EmailAlbum.

Lien vers le commentaire
Partager sur d’autres sites

MERCI !!!!!!

Merci Nivek pour ce package !!! Cela fait des mois que je me trimballe un bug dans une de mes appli, qui faisait planter, de temps en temps, mon appli, et grâce à ton package et la possibilité de mettre des variables perso, j'ai compris pourquoi !

MILLE MERCI !!!!!!!!!!

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Salut à tous et merci pour ce super boulot,

J'ai installé ACRA comme indiqué dans le howto : import du .rar dans un nouveau répertoire lib dans mon projet sous Eclipse, création de la classe NomDeMonAppli, remplacement du getFormID avec le code du fichier Google Docs, modifications dans le manifest (name NomDeMonAppli + permission internet).

J'ai lancé mon appli dans l'émulateur avec une erreur volontaire (le logcat fait bien référence à un NullPointerException), mais rien n'a été envoyé dans le Google Docs.

A priori, l'émulateur à bien accès à internet (j'ai testé), donc cela devrait fonctionner non ?

Lien vers le commentaire
Partager sur d’autres sites

J'ai bien ajouté :

android:theme="@android:style/Theme.Dialog"

android:launchMode="singleInstance" />

Dans le Manifest, mais je ne l'utilise pas dans mes classes.

Le document Google Docs est bien mis à jour automatiquement dés qu'il y a une erreur non catchée non ?

Lien vers le commentaire
Partager sur d’autres sites

Bon ok après analyse, le Manifest ne conservait pas le paramétrage effectué par les écrans de configuration.

Par exemple : le Name était visible à l'écran dans ces écrans de paramétrage du Manifest un certain temps et même après sauvegarde, mais il disparaissait au bout d'un certain temps (!?) et n'était pas réellement écrit dans le Manifest : encore un bug de Eclipse ?

J'ai donc ajouté manuellement la ligne :

android:name="NomDeMonAppli" dans la partie du Manifest

Idem pour la permission Internet, ajout manuel de la ligne :

sous

Et ça fonctionne.

Modifié par bambuk
Lien vers le commentaire
Partager sur d’autres sites

Maintenant que ça marche nickel, il serait super utile au vue de vos expériences, que vous indiquiez les informations/variables utiles à ajouter dans les rapports.

Le mieux serait d'indiquer ces appels directement en Java. Exemple :

- Mémoire totale :

org.acra.ErrorReporter.getInstance().addCustomData("Mémoire totale",Long.toString(org.acra.ErrorReporter.getTotalInternalMemorySize()));

- Mémoire disponible :

org.acra.ErrorReporter.getInstance().addCustomData("Mémoire disponible",Long.toString(org.acra.ErrorReporter.getAvailableInternalMemorySize()));

- Classe appelante :

org.acra.ErrorReporter.getInstance().addCustomData("Classe", this.getLocalClassName());

Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Une nouvelle version est disponible pour test. Les détails sur http://code.google.com/p/acra/wiki/ACRA21Test

Pas de grosse nouveauté, mais du bugfix pour ceux qui utilisent le mode Notification en barre d'état avec boite de dialog, les rapports silencieux, où qui n'étaient pas satisfaits du mode de gestion de l'activation de l'envoi de rapports dans la librairie.

Je n'ai pas beaucoup de temps pour tester de mon côté alors votre aide sera la bienvenue pour apposer le tampon "Stable" sur cette version ;-)

Lien vers le commentaire
Partager sur d’autres sites

  • 2 months later...

Bonjour Nivek,

Est ce qu'en utilisant ACRA, on garde les fonctionnalités du market pour tracer les erreurs/freezes ... ?

Si ce n'est pas le cas, je souhaiterais juste utiliser ACRA pour une erreur en particulier et ne pas l'utiliser pour toutes les autres erreurs. Il y a un mécanisme de prévu pour ca ?

Merci d'avance ;)

Lien vers le commentaire
Partager sur d’autres sites

Quand ACRA est activé, toutes les Exceptions non catchées sont au final récupérées par ACRA.

En l'état, il n'y a pas de fonctionnalité permettant de choisir entre un rapport ACRA ou une gestion d'erreur "standard" selon les cas... mais tu peux packager ton appli avec ACRA le temps de debugger l'erreur qui te tient à coeur puis republier sans ACRA quand tu lui as tordu le cou !

Lien vers le commentaire
Partager sur d’autres sites

Pour info, je suis en train de tester un nouveau mode de mise en oeuvre d'ACRA sur les applications qui permettra de se débarrasser de la nécessité d'étrendre la classe CrashReportingApplication.

Cet héritage empêche d'utiliser facilement ACRA conjointement avec des librairies/framework plus évolués tels que GreenDroid, RoboGuice, Droid-Fu et certainement d'autres, ce qui est bien dommage.

Du coup, pour activer ACRA sur vos projets, il faudra mettre en place une classe Application, mais la configuration se fera comme suit :

// Configuration d'ACRA via une annotation. Seul le paramètre de l'id du formulaire est
// obligatoire, les autres configurations possibles dans la version actuelle d'ACRA resteront
// réalisables via d'autres paramètres de cette annotation.
@ReportsCrashes(formId = "dEM4SDNGX0tvaDVxSjk0NVM5ZTl4Y3c6MQ")
public class CrashTest extends Application  { // ou bien GDApplication ou GuiceApplication ou DroidFuApplication...

@Override
public void onCreate() {
	super.onCreate();

	// La ligne suivante est obligatoire pour activer ACRA
	ACRA.init(this);
}
}

Donc pour résumer : une annotation pour la configuration, une ligne de code pour l'activation dans le onCreate() et c'est fini.

Qu'en pensez-vous ?

EDIT: RHAAAAAAAAAA les annotations Runtime ne sont pas implémentées dans toutes les versions d'android et de plus dans les versions où elles le sont elles sont buggées !!!!

Du coup le code que j'ai implémenté et que je n'arrivais pas à faire tourner en constatant des erreurs mystiques (code natif) ne pourra pas fonctionner hmm.png.

EDIT: Tout n'est pas perdu, visiblement je dois juste revoir la façon dont j'avais prévu de permettre la configuration des resources pour les textes/icones de notification... en même temps ça sera peut-être plus clair... bref...

EDIT: bon bah ça fonctionne plutôt bien :-) Pas encore pu tout tester mais j'ai déjà commencé la nouvelle version de la doc d'installation de la librairie pour que vous ayez les détails de configuration en fonction des différents modes de notif: http://code.google.com/p/acra/wiki/ACRA3HowTo

Modifié par Nivek
Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

ACRA v3 est disponible, direction http://acra.googlecode.com pour tous les détails.

En plus du nouveau mode de configuration, j'ai enrichi les rapports avec :

  • Les détails de la Configuration initiale, au lancement de l'application (type de clavier, caché ou non, orientation, type de navigation, type d'écran tactile, langue, pays, codes réseau mobile...)
  • Les mêmes détails de Configuration au moment du crash. Utile pour voir si il y a eu un changement depuis le lancement de l'appli, ce qui peut donner un indice pour dépister les crash (les changements de conf étant source de bien des problèmes et on ne les teste pas forcément)
  • Les détails de l'écran (résolution, définition)
  • L'heure locale utilisateur au moment du crash

Il y a également quelques bugfixes, du genre le listener sur les SharedPreferences qui pouvait être Garbage Collecté et donc devenir inefficace.

Je vous encourage à tester cette version, plus j'ai de retours et plus vite elle pourra remplacer la dernière version stable (qui d'ailleurs à franchi la barre des 600 downloads hier smile.png.

Merci !

Modifié par Nivek
Lien vers le commentaire
Partager sur d’autres sites

  • 2 months later...

Hello,

Un p'tit état des travaux en cours:

  • J'ai découvert hier les travaux d'un développeur d'appli qui a utilisé Google Visualization API pour générer des graphes d'analyse des rapports à partir DIRECTEMENT du Spreadsheet ACRA... c'est tout simplement bluffant et ça n'a pas l'air bien compliqué à implémenter:

    [*]Features de la prochaine version:

    • Remontée d'un extrait des 3 logcat existants (standard, eventslog, radioevents) - actif si permission READ_LOGS
    • Remontée des événements enregistrés par le DropBoxManager - actif si permission READ_LOGS
    • Remontée des infos mémoire telles que fournies par adb logsys meminfo pour le process de l'appli
    • Remontée de l'IMEI (utile pour les flottes déployées en entreprise) - actif si permission READ_PHONE_STATE
    • Découplage de l'envoi des rapports vis-à-vis du formalisme Google Form
      • L'envoi sur script server perso se fera avec des paramètres POST compréhensibles
      • Ajout d'un mode d'envoi par mail - permet de se passer de la permission INTERNET
      • Possibilité pour les développeurs d'ajouter leurs propres classes d'envoi de rapport (permet une adaptabilité pour tout système de crash reporting existant, du marché ou spécifique)

Par la suite, je vais me concentrer certainement sur des features permettant de faciliter l'analyse et le traitement des crashes.

Les idées sont toujours les bienvenues, et on peut même en discuter sur le groupe de discussion que je viens de créer :

https://groups.googl...up/acra-discuss

Kevin

Modifié par Nivek
Lien vers le commentaire
Partager sur d’autres sites

  • 3 months later...

Hello,

Même si je ne viens plus beaucoup par ici faute de temps, je voulais vous faire part d'une nouvelle version d'ACRA disponible en Beta:

https://groups.google.com/d/topic/acra-discuss/v_37QNRUnOM/discussion

En synthèse et en Français, voilà les nouveautés:

  • Nouvelles données ajoutées aux rapports:
    • logcat: default, events, radio (nécessite permission READ_LOGS)
    • résultat de la commande 'dumpsys meminfo' pour le process de l'application
    • code version de l'appli, en plus du libellé de version
    • identifiant unique du matériel (nécessite permission READ_PHONE_STATE)
    • événements text loggés dans la dropbox système (nécessite READ_LOGS)
    • date/heure de démarrage de l'application
    • liste des fonctionnalités présentes sur le matériel (celles qui permettent au market de déterminer si un matériel peut ou non faire tourner une application)
    • identifiant unique de rapport
    • identifiant unique d'installation
    • état du stockage externe
    • settings (system et secure)
    • is silent ?

    [*]Comme demandé souvent, un rapport ne devrait plus être notifié qu'une seule fois à l'utilisateur.[*]Vous pouvez implémenter votre propre classe d'envoi de rapport[*]Pour les utilisateurs de scripts serveur perso, l'authentification Basic HTTP est maintenant supportée[*]Les rapports peuvent être envoyés par mail pour les applications qui ne voudraient pas avoir à demander la permission INTERNET[*]Nouvelles préférences proposables à l'utilisateur

    • inclure les logs système (peut contenir des données privées)
    • inclure l'identifiant unique du matériel (IMEI)
    • inclure l'adresse email de l'utilisateur (celui-ci saisit manuellement son email dans un champ texte en préférences)
    • toujours accepter l'envoi de rapports

[*]La boite de confirmation d'envoi de rapport peut maintenant contenir un champ de saisie d'adresse mail (la valeur saisie est stockée dans la préférence ci-dessus pour préremplir le champ par la suite)[*]Tous les champs relatifs au build de la version android sont rassemblées dans un champ unique BUILD[*]Vous pouvez définir la liste des champs à inclure dans les rapports, cela permet d'améliorer les perfs et de vous débarrasser des champs que vous n'utilisez pas.

Pour tester:

Merci d'avance pour vos tests. Je pense que la phase beta durera un bon mois, il reste donc 3 semaines pour tester et remonter les bugs au plus vite avant de lancer cette nouvelle version comme la version stable officielle.

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...