Par défaut, active les rapports d'incident pour vos applications mobiles afin de faciliter le suivi et le diagnostic des incidents. Lorsqu'une application Android plante, l'agent télécharge un rapport de plantage sur le collecteur New Relic. Les détails du crash seront ensuite traités et désobscurcis automatiquement si vous utilisez ProGuard ou DexGuard.
Vous pouvez afficher des informations détaillées sur les plantages dans l'interface utilisateurCrash analysis ou recevoir une notification de plantage par e-mail. Vous pouvez également intégrer le système de tickets pour une enquête plus approfondie.
Téléchargez le fichier ProGuard ou DexGuard
L'agent Android prend en charge ProGuard et DexGuard. DexGuard est une extension de ProGuard, et il se comporte de la même manière que ProGuard lorsqu'il s'agit de gérer la symbologie des plantages et les cartes de code obscurcies.
ProGuard obscurcit votre code en renommant les classes, les champs et les méthodes avec des étiquettes sémantiquement obscures. DexGuard ajoute une couche supplémentaire d'obfuscation et de sécurité, mais se comporte par ailleurs de manière identique à ProGuard. Si ProGuard ou DexGuard est activé, la trace d'appels produite par un crash se compose uniquement de ces étiquettes obscurcies, qui ne sont pas lisibles par l'homme.
Suivez les instructions d’installation ou de mise à niveau du SDK pour configurer ProGuard ou DexGuard et activer les rapports d’incident. Assurez-vous de créer le fichier newrelic.properties
contenant votre jeton d’application.
Utiliser le fichier mapping.txt
L'agent utilise le fichier mapping.txt
produit lors d'une build compatible ProGuard/DexGuard. Ce fichier contient les noms d'étiquettes obscurcis et fournit une modélisation inverse entre les étiquettes obscurcies et en texte brut. Vous devez utiliser la copie de mapping.txt
générée lors de la construction qui a produit votre application finale. L'ID de build de l'application change à chaque fois qu'un APK est généré, et l'ID de build dans le fichier de modélisation doit correspondre à l'ID contenu dans chaque rapport de crash téléchargé.
Après avoir créé un fichier newrelic.properties
contenant votre jeton d'application New Relic dans votre projet, le fichier ProGuard ou DexGuard mapping.txt
sera automatiquement téléchargé après chaque build.
Exception
Si l'une des situations suivantes se produit, vous devez télécharger manuellement le fichier de remplacement mapping.txt
:
- Si le fichier
mapping.txt
est renommé à l'aide de l'option DexGuard-printmapping
, l'agent Android ne pourra pas localiser ni télécharger les noms supprimés. - Si vous voyez des rapports de plantage obscurcis sur la pageCrashes , il se peut que vous n'ayez pas téléchargé de fichier
mapping.txt
.
Traitement de la carte
Important
La version 5.27.0 de l'agent introduit des modifications dans la manière dont le processus de mappage du plug-in de l'agent se déroule pendant les builds.
Les cartes sont signalées pour certaines variantes de build
L'agent tag et signalera uniquement les fichiers mapping.txt
générés par Release
variantes de type de build. Ce comportement peut être configuré ou désactivé via l'extension New Relic Gradle Plugin .
Des identifiants de build uniques sont attribués aux variantes
Lors de l'exécution d'une build Gradle, un seul ID unique (ID de build) a été généré pour représenter toutes les variantes de l'application créées lors de cet appel. Cela conduisait souvent à des rapports de plantage incompatibles pour les clients utilisant des variantes pour personnaliser une code base d'application commune.
Chaque variante est désormais identifiée par son propre identifiant unique, qui est utilisé lors de la signalisation de la carte ProGuard de la variante à New Relic. Vous pouvez désactiver ce comportement via l'extension New Relic Gradle Plugin .
Compresser les cartes avant de les télécharger
À mesure que les applications deviennent plus grandes, leurs cartes associées le deviennent également, ce qui entraîne des temps de téléchargement plus longs lors de la création du rapport sur la carte. Si le temps de rapport de la carte est déraisonnablement long, l'agent peut compresser la carte avant le transfert.
Pour activer les téléchargements de cartes compressées, ajoutez les éléments suivants au fichier newrelic.properties
de votre application :
com.newrelic.compressed_uploads=true
Configurer l'hôte de téléchargement de la modélisation
Ajoutez ce qui suit au fichier newrelic.properties
de votre application pour envoyer des cartes sur un serveur redirigé :
# Please only provide the host name as the value without https:// at the beginning or / at the end, for example: xyz.api.comcom.newrelic.mapping_upload_host=xyz.api.com
Rapport d'accident différé
Important
La version 6.0.0 de l'agent introduit des modifications dans la manière dont le plug-in de l'agent traite les plantages lors de l'exécution.
Afin de résoudre le problème de duplication des rapports d'incident, le rapport d'incident différé est désormais le comportement par défaut des rapports d'incident. Dans ce cas, les rapports d'incident sont enregistrés lorsqu'ils se produisent, mais ils ne sont pas téléchargés avant le prochain lancement de l'application.
Le comportement précédent de rapport de crash est toujours disponible : téléchargement du crash dès qu'il se produit avant la fin du processus de candidature. Vous pouvez utiliser la méthode API NewRelic.withCrashReportingEnabled(boolean)
. Par exemple:
NewRelic .withApplicationToken("<appToken>") .withCrashReportingEnabled(true) .start(this.getApplication());
Désactiver les rapports d'incident
Si vous souhaitez utiliser un autre outil de rapport d'incident, vous pouvez désactiver le rapport d'incident en appelant NewRelic.disableFeature(FeatureFlag.CrashReporting)
avant l'initialisation de l'agent. Par exemple:
NewRelic.disableFeature(FeatureFlag.CrashReporting);NewRelic .withApplicationToken("<appToken>") .start(this.getApplication());
Déboguer le rapport de crash
Le rapport de plantage pour Android est conçu pour fonctionner avec d'autres frameworks de rapport de plantage en enchaînant le gestionnaire d'exceptions non détectées s'il est déjà enregistré.
Si aucun autre framework n'a été trouvé (ou si New Relic est le premier framework enregistré), le log de débogage inclura :
Installing New Relic crash handler.Si un autre gestionnaire est déjà enregistré, le log de débogage inclura :
Installing New Relic crash handler and chaining previous exception handler.
Chaque fois que New Relic détecte une exception, elle est enregistrée au niveau DEBUG
. Par exemple:
A crash has been detected in <className>.
Si New Relic détecte une exception mais que le rapport d'incident a été désactivé pour une raison quelconque, ce message est enregistré :
A crash has been detected but crash reporting is disabled.
Si vous ne voyez pas de rapports de plantage, vérifiez le log de débogage pour des messages comme celui-ci.
Télécharger manuellement un fichier de carte ProGuard ou DexGuard
Dans certaines circonstances inhabituelles, il peut ne pas être possible de télécharger automatiquement le fichier de modélisation ProGuard ou DexGuard. Cela est souvent dû à la création incorrecte d’un fichier newrelic.properties
contenant votre jeton d’application. Cela entraînera des erreurs de construction ou des avertissements avec un message détaillé dans log.
Pour télécharger manuellement un fichier de carte ProGuard ou DexGuard :
Recherchez le(s) fichier(s)
mapping.txt
dans le répertoire de build du projet. Par exemple, le fichier se trouve dans le répertoire<PROJECT_ROOT>/app/build/outputs/mapping/<BUILD_VARIANT>
pour les projets qui utilisent Android Studio. Généralement, une varianterelease
est utilisée lors de la création de la version finale de l'application. La commande suivante est utile pour rechercher des fichiers de carte :bash$find <project_root> -name mapping.txtÀ l’aide d’un terminal de commande, téléchargez le fichier de modélisation ProGuard ou DexGuard :
Pour un US account:
bash$curl -v -F upload=@"<mapping.txt>" -H "X-APP-LICENSE-KEY:<APPLICATION_TOKEN>" https://mobile-symbol-upload.newrelic.com/symbolPour un EU account:
bash$curl -v -F upload=@"<mapping.txt>" -H "X-APP-LICENSE-KEY:<APPLICATION_TOKEN>" https://mobile-symbol-upload.eu.newrelic.com/symbol
Remplacez ce qui suit dans votre commande :
<mapping.txt>
est le chemin complet vers le fichier ProGuard ou DexGuardmapping.txt
.<APPLICATION_TOKEN>
est votre jeton d'application de monitoring mobile
Rapport de plantage natif Android
À partir de la version 6.7.0 de l'agent Android New Relic, pour aider à suivre et à diagnostiquer les pannes natives, les rapports et les analyses ont été améliorés pour inclure la violation du signal et d'autres défauts qui se produisent au niveau du code natif pendant l'exécution.
Apprenez-en plus sur les rapports de plantage natifs d'Android ici.