portaldacalheta.pt
  • Principal
  • Rise Of Remote
  • Outils Et Tutoriels
  • Équipes Distribuées
  • Mode De Vie
Mobile

Rapports de crash Android automatisés avec ACRA et Cloudant



Créer une application Android de base est facile. En revanche, créer une application Android fiable, évolutive et robuste peut être Assez difficile .

Avec milliers des appareils disponibles provenant de tonnes de fabricants différents, en supposant qu'un seul morceau de code fonctionnera de manière fiable sur les téléphones est au mieux naïf.



La segmentation est le plus grand compromis pour avoir une plate-forme ouverte, et nous payons le prix dans la devise de la maintenance du code, qui se poursuit longtemps après qu'une application a passé la phase de production.



Pourquoi le rapport d'erreurs Android est important

Alors, que se passe-t-il lorsqu'une application Android plante ou devient non réactif ? Eh bien, la boîte de dialogue 'Forcer la fermeture' apparaît, indiquant à l'utilisateur que quelque chose ne va pas. Si l'application a été téléchargée via Google Play, l'utilisateur sera invité à signaler le plantage en envoyant un rapport de plantage Android détaillé (avec l'heure, le modèle de téléphone, la version Android, la trace de la pile, etc.) que vous (le développeur) pouvez afficher dans la console du développeur, vous permettant de résoudre le bogue du coupable.



Tout cela semble très bien, mais il y a un problème majeur avec le rapport d'erreurs par défaut d'Android: les utilisateurs ont tendance à ne pas l'utiliser, laissant les développeurs ignorants de l'état de leurs applications.

Tout cela semble très bien, mais l'utilisation du rapport d'erreurs par défaut d'Android pose un problème majeur: les utilisateurs ont tendance à ne pas pour agir lorsque leurs applications plantent; en fait, la majorité choisit ne pas envoyer dans les rapports d'erreur Android. Comment alors, pouvez-vous, en tant que développeur consciencieux , obtenir des informations fiables sur les plantages et les échecs de votre application?

Un journal des pannes Android fiable est particulièrement important lorsque les utilisateurs n



Présentation de l'ACRA

ACRA signifie «Automated Crash Reporting for Android». Il s’agit d’une bibliothèque gratuite qui vous permet de résoudre le problème des «rapports d’erreurs manuels» en quelques lignes de code. Une fois que vous avez mis en œuvre la bibliothèque et que tout a été correctement initialisé, vous pourrez extraire les mêmes journaux d'erreurs Android que ceux par défaut de Google (plus un tas d'options de personnalisation ajoutées) automatiquement et sans que l'utilisateur n'ait à agir.

Au-delà de cela, l'ACRA vous permet de choisir la manière dont vous souhaitez informer l'utilisateur d'un crash Android, la valeur par défaut étant la création de rapports en arrière-plan silencieux et des alternatives comprenant des boîtes de dialogue personnalisées.



Jusqu'à récemment, l'ACRA était soutenu par Google Spreadsheet, ce qui signifiait que vous pouviez recevoir tous vos rapports dans un seul fichier, hébergé gratuitement sur votre compte Google Drive. Malheureusement, Google a demandé que nous n'utilisions pas cette option à l'avenir, il nous reste donc quelques alternatives pour l'envoi de données de rapport d'erreur, dont certaines seront abordées dans ce didacticiel:

  • E-mail standard (nécessite toujours une interaction de l'utilisateur).
  • Client e-mail / HTTP personnalisé (nécessite une configuration étendue).
  • Back-end personnalisé (avec options variant des solutions gratuites aux solutions commerciales).

Dans cet article, nous analyserons l'une de ces solutions: l'hébergement de vos rapports ACRA sur un Cloudant back-end et visualiser les données avec acralyzer .



Configurer un back-end Cloudant

La première chose que nous devons faire est S'inscrire un compte Cloudant. Bien sûr, il y a un hic: les services de Cloudant ne sont pas entièrement gratuits, mais selon leur page de tarification il est très peu probable que vous dépassiez la limite mensuelle de 5 $ (sauf si vous avez une énorme base d'utilisateurs et une tonne de bogues dans votre code).

Une fois que nous nous sommes inscrits, nous devons comprendre comment les choses fonctionnent. À un niveau élevé, notre back-end sera composé de deux composants:



  1. Une base de données de stockage ou, pour être plus précis, un Apache CouchDB . CouchDB stocke ses données au format JSON, ce qui signifie que tous les rapports envoyés depuis l'appareil Android doivent correspondre au format pour être insérés en tant qu'entrée. Une insertion de base de données est une simple requête HTTP POST ou PUT.
  2. Une application web (pour analyse) ou, pour être plus précis, une CouchApp . Il s'agit d'une application JavaScript simple qui vous permet d'exécuter des requêtes et d'afficher les données stockées dans l'instance CouchDB.

Pour que notre back-end fonctionne correctement, nous devons configurer ces deux composants. En théorie, nous pourrions créer la base de données et l'application de la source , puis utilisez un outil pour les déployer dans notre back-end - mais les bonnes personnes de l'ACRA l'ont déjà fait pour nous. L'approche la plus simple consiste donc à répliquer une base de données distante et une application distante.

Allons-y et répliquons un ACRA CouchDB vide:



  • Sélectionnez la section «Réplication» dans votre tableau de bord Cloudant.
  • En tant que base de données source, sélectionnez 'Base de données distante' avec http://get.acralyzer.com/distrib-acra-storage comme URL.
  • En tant que base de données cible, sélectionnez 'Nouvelle base de données' et nommez-la 'acra- {myapp}' (sans les guillemets). Notez que le paramètre {myapp} doit être unique à votre application et que le nom de la base de données doit commencer par «acra-».
  • Cliquez sur 'Répliquer'.

Cela montre comment configurer un back-end Cloudant pour gérer les rapports de plantage Android.

Ainsi, nous avons répliqué avec succès la base de données pour le stockage des rapports. Ensuite, nous devons répliquer l'acralyzer CouchApp afin de pouvoir visualiser les données:

  • Sélectionnez la section «Réplication» dans votre tableau de bord Cloudant.
  • En tant que base de données source, sélectionnez 'Base de données distante' avec http://get.acralyzer.com/distrib-acralyzer comme URL.
  • En tant que base de données cible, sélectionnez «Nouvelle base de données» et nommez-la «acralyzer».
  • Cliquez sur 'Répliquer'.

Cette étape consiste à répliquer l

Remarque : la réplication de l'application acralyzer est facultative. Vous n'en aurez pas besoin si vous souhaitez uniquement stocker votre rapport d'erreur Android, plutôt que visualiser les données (nous examinerons de plus près acralyzer dans la section suivante de ce didacticiel Android). Si vous vous sentez suffisamment en confiance avec vos compétences JavaScript, vous pouvez même créer votre propre application d'analyse! Mais cela sort du cadre de cet article de blog.

La dernière étape du processus de configuration initiale consiste à ajouter des autorisations de sécurité. Cloudant fournit sa propre couche de sécurité sur CouchDB avec un contrôle plus fin sur les droits individuels.Par conséquent, pour écrire un rapport dans notre base de données, nous devons créer un compte utilisateur avec des autorisations d'écriture:

exemple de document de spécification technique de développement web
  • Sélectionnez la section «Base de données» dans votre tableau de bord Cloudant.
  • Cliquez sur la section des autorisations (icône de verrouillage) pour la base de données acra- {myapp}.
  • Cliquez sur 'Générer des clés API'.
  • Notez le nom d'utilisateur et le mot de passe générés (nous les utiliserons plus tard).
  • Ajoutez des autorisations d'écriture pour le nom d'utilisateur généré.

Ajoutez des autorisations de sécurité pour que vos journaux et rapports d

Visualiser les rapports de plantage Android avec acralyzer

Une fois répliqué, le tableau de bord acralyzer est facilement accessible en suivant https://{myapp}.cloudant.com/acralyzer/_design/acralyzer/index.html#/dashboard. Je l’admets: ce n’est pas le plus bel outil d’analyse, mais il remplit son rôle.

Dans le menu supérieur, vous pouvez sélectionner la base de données que vous souhaitez visualiser (il est possible d'héberger plusieurs bases de données pour différentes applications dans un même projet; cela affectera votre quota d'utilisation) et prévisualiser les données dans le tableau de bord principal. Par exemple, vous pouvez:

  • Tracez le nombre de rapports par unité de temps (heure, jour, mois, etc.).
  • Affichez la distribution des rapports par métriques spécifiques à Android (version d'Android, version du SDK, version de l'application, appareil, etc.).
  • Répertoriez tous les rapports de plantage (avec une trace détaillée de la pile) ou visualisez tous les bogues (ici, un «bogue» est un groupe de rapports identiques provenant de différents utilisateurs).
  • Prévisualisez les détails d'un seul bogue et définissez son statut comme résolu (si corrigé).
  • Purgez les entrées anciennes ou obsolètes.

La visualisation des données du journal des pannes Android peut être très utile pour améliorer votre application de manière plus stratégique.

Notez que les métriques de crash Android disponibles pour la visualisation dépendront des rapports que nous choisissons d'envoyer à partir de notre application. ACRA offre une variété de champs de rapport , dont certains peuvent être assez volumineux ou pas totalement pertinents pour la correction de bogues. Pour la plupart des projets, les champs de rapport requis seront suffisants. Ceux-ci inclus:

  • APP_VERSION_CODE
  • APP_VERSION_NAME
  • ANDROID_VERSION
  • NOM DU PAQUET
  • REPORT_ID
  • CONSTRUIRE
  • TRACE DE LA PILE

Implémentation de l'ACRA dans votre projet Android

Comme mentionné précédemment dans ce tutoriel, la mise en œuvre de l'ACRA est très simple et ne nécessite que quelques étapes rapides.

Ajouter une dépendance

Tout d'abord, nous devons inclure la bibliothèque en tant que dépendance de l'une des manières suivantes:

  • As a .pot fichier dans votre dossier / libs.
  • En tant que dépendance maven:

    ch.acra acra X.Y.Z
  • En tant que dépendance gradle:

    compile 'ch.acra:acra:X.Y.Z'

Ajouter une classe d'application

Ensuite, nous devons ajouter une classe d'application Android à notre projet (ou mettre à jour une classe existante, car il ne peut y avoir qu'une seule instance) et la déclarer dans le fichier AndroidManifest.xml:

...

Et configurez l'ACRA là-bas:

@ReportsCrashes( formUri = 'https://{myusername}.cloudant.com/acra-{myapp}/_design/acra-storage/_update/report', reportType = HttpSender.Type.JSON, httpMethod = HttpSender.Method.POST, formUriBasicAuthLogin = 'GENERATED_USERNAME_WITH_WRITE_PERMISSIONS', formUriBasicAuthPassword = 'GENERATED_PASSWORD', formKey = '', // This is required for backward compatibility but not used customReportContent = { ReportField.APP_VERSION_CODE, ReportField.APP_VERSION_NAME, ReportField.ANDROID_VERSION, ReportField.PACKAGE_NAME, ReportField.REPORT_ID, ReportField.BUILD, ReportField.STACK_TRACE }, mode = ReportingInteractionMode.TOAST, resToastText = R.string.toast_crash ) public class MainApp extends Application { @Override public void onCreate() { super.onCreate(); // The following line triggers the initialization of ACRA ACRA.init(this); } }

C'est tout! Bien sûr, vous devrez remplacer tous les espaces réservés {myapp} par des valeurs réelles, ainsi que des valeurs pour formUriBasicAuthLogin et formUriBasicAuthPassword.

Comme vous pouvez le voir dans l'extrait de code ci-dessus, nous n'utilisons que les champs de rapport obligatoires. N'hésitez pas à ajouter tout autre champ pouvant être pertinent pour votre candidature.

Vous pouvez également choisir d'utiliser PUT au lieu de POST. Dans ce cas, le REPORT_ID sera ajouté à la fin de former comme paramètre.

Enfin, vous pouvez également choisir la manière dont l'utilisateur est informé du plantage de l'application Android, la valeur par défaut étant un rapport d'arrière-plan silencieux. Dans notre cas, nous choisissons d'afficher un message Toast informant l'utilisateur que le plantage a été signalé et qu'un correctif de bogue devrait être disponible prochainement.

Besoin d'aide? Voici un exemple de projet

Pour voir l'ACRA en action, j'ai configuré le acra_example repo sur GitHub. Il propose une application simple qui initialise l'ACRA au démarrage et vous permet de le planter en appuyant sur un bouton (ce qui déclenche alors une exception de pointeur nul). Les données de plantage sont envoyées à un exemple de base de données Cloudant qui peut être visualisé Ici .

Pour afficher les données, connectez-vous avec les informations d'identification suivantes:

  • Nom d'utilisateur: medo
  • Mot de passe: acraexample

Alternatives à l'ACRA

L'ACRA n'est pas la seule option pour les rapports d'erreurs Android automatisés. Étant donné que les plantages sont inévitables, il existe un grand marché B2D (business-to-developer) qui tente de monétiser leur résolution.

Crittercisme , par exemple, est une plate-forme très mature pour les rapports d'incidents. Il a fière allure, offre un tas d'options pour l'analyse des données et est très facile à intégrer. Le seul inconvénient: prix , et l'essai gratuit est assez limité en termes de nombre d'utilisateurs actifs, de jours de conservation des données et de support). BugSense est un service similaire.

À mon avis, cependant, Crashlytics est une solution supérieure. Jusqu'à récemment, Crashlytics avait un modèle freemium (avec un niveau premium payant); mais maintenant (après leur acquisition par Twitter ), toutes les fonctionnalités anciennement premium sont disponibles pour libre . Il n'y a pas de frais d'utilisation, de frais ou de limites. Il s'agit du moyen préféré de rapport d'erreurs pour de nombreuses entreprises et développeurs de haut niveau, car il est très facile à utiliser et offre de puissants outils d'analyse et de visualisation. Il s'intègre même avec les IDE les plus populaires en tant que plugin (par exemple, Eclipse, Android Studio), donc l'ajout de Crashlytics à votre application est aussi simple que de sélectionner un projet et d'appuyer sur un bouton. Ces plugins vous permettent également de suivre les rapports de plantage de votre IDE sans avoir à ouvrir un navigateur.

Alors, pourquoi utiliser ACRA alors qu'il existe d'autres alternatives qui semblent bien meilleures et offrent plus de fonctionnalités pour le même effort de mise en œuvre? Je vais vous donner deux raisons.

  1. Toutes ces autres options sont logiciel propriétaire, source fermée . Même avec un panier rempli de CLUF, vous ne pouvez pas être sûr exactement Comment vos données sont collectées et traitées. D'autre part, ACRA et acralyzer sont des projets open source hébergés sur GitHub que vous pouvez facilement adapter et adapter à vos besoins.

  2. Mobilité des données . Disons que vous n'êtes pas satisfait de Cloudant. C'est un jeu d'enfant de répliquer et de migrer vos données vers un autre back-end. Vous êtes assuré que les données reste le vôtre .

    compiler en c++

Comme pour de nombreux choix, celui-ci se résume à des préférences personnelles et à la familiarité. Découvrez ce Google+ fil pour plus de discussion sur les différentes alternatives disponibles pour rendre votre application plus fiable.

En conclusion

ACRA est un très robuste et hautement personnalisable bibliothèque qui peut être utilisée avec Cloudant et acralyzer pour obtenir des rapports d'incidents automatisés et gratuits et des analyses de base pour votre application, le tout pour un effort de mise en œuvre minimal.

Ecrire un code Android fiable nécessite beaucoup d'expérience et de prévoyance, mais aucun de nous n'est vraiment omniscient. Soyez prêt pour les plantages et les erreurs inattendus, et soyez prêt à réparer l'inattendu dès que possible. C’est le genre de travail qui se traduit par des produits de qualité et des expériences utilisateur exceptionnelles.

En relation: Rendez votre application rentable: tirez parti de Mobile Analytics

Lancez vos tests PHP avec Codeception

Back-End

Lancez vos tests PHP avec Codeception
Crypto-monnaie pour les nuls: Bitcoin et au-delà

Crypto-monnaie pour les nuls: Bitcoin et au-delà

Science Des Données Et Bases De Données

Articles Populaires
Création d'une API REST Node.js / TypeScript, partie 2: modèles, middleware et services
Création d'une API REST Node.js / TypeScript, partie 2: modèles, middleware et services
Un didacticiel sur la radio définie par logiciel: images de la Station spatiale internationale et écoute de jambons avec un RTL-SDR
Un didacticiel sur la radio définie par logiciel: images de la Station spatiale internationale et écoute de jambons avec un RTL-SDR
Les drones commerciaux révolutionnent les opérations commerciales
Les drones commerciaux révolutionnent les opérations commerciales
Faire des affaires dans l'Union européenne
Faire des affaires dans l'Union européenne
AI vs BI: différences et synergies
AI vs BI: différences et synergies
 
Stratège de contenu produit
Stratège de contenu produit
Risque vs récompense: un guide pour comprendre les conteneurs logiciels
Risque vs récompense: un guide pour comprendre les conteneurs logiciels
Explorer SMACSS: architecture évolutive et modulaire pour CSS
Explorer SMACSS: architecture évolutive et modulaire pour CSS
Si vous n'utilisez pas de données UX, ce n'est pas de la conception UX
Si vous n'utilisez pas de données UX, ce n'est pas de la conception UX
Simplification de l'utilisation des API RESTful et de la persistance des données sur iOS avec Mantle et Realm
Simplification de l'utilisation des API RESTful et de la persistance des données sur iOS avec Mantle et Realm
Articles Populaires
  • informations de carte de crédit qui fonctionnent
  • c++ <>
  • ikea se positionne stratégiquement en fonction des besoins suivants des clients ?
  • cadre de test unitaire de studio visuel
  • c++ inclut d'autres fichiers cpp
Catégories
  • Rise Of Remote
  • Outils Et Tutoriels
  • Équipes Distribuées
  • Mode De Vie
  • © 2022 | Tous Les Droits Sont Réservés

    portaldacalheta.pt