Analyse des plantages d'applications Android à l'aide de fichiers de mappage de source
Vous pouvez consulter les détails des plantages de l'application Android sur Instana. Les détails incluent des traces de pile pour toutes les unités d'exécution actives de votre application mobile. Ces traces de pile contiennent l'adresse mémoire et le nom de la fonction brute. Vous pouvez utiliser Instana pour traduire la trace de la pile en informations exploitables.
Si le code de votre application Android est brouillé, il est difficile de comprendre la trace de pile. Si vous utilisez un compilateur tel que ProGuard,, DexGuard, ou R8 pour optimiser et obscurcir le code, Instana permet de désobscurcir la trace de la pile. Instana décode la trace de la pile en utilisant le mapping.txt fichier de votre projet. Le fichier de mappage mappe la classe, la méthode et les zones d'origine aux noms brouillés qui rendent les traces de pile lisibles.
Pour traduire la trace de la pile, téléchargez le mapping.txt fichier sur Instana. Vous pouvez télécharger un fichier de mappage en effectuant des appels à l' REST API. Une fois le fichier de cartographie téléchargé, des informations supplémentaires concernant le plantage s'affichent dans l'interface utilisateur d' Instana. Pour afficher les détails, cliquez sur Unités d'exécution en panne dans l'onglet Pannes . Pour plus d'informations, voir Crashes.
Téléchargement de fichiers de cartographie
Vérifiez que les prérequis suivants sont remplis avant de télécharger un fichier de mappage:
- Un jeton d' API e est créé avec des autorisations de configuration activées pour la surveillance des applications mobiles. Pour plus d'informations, consultez la page « API Tokens ».
- Les cartes sources sont stockées pour l'édition personnalisée auto-hébergée ( Kubernetes ou Red Hat OpenShift Container Platform ). Pour plus d'informations, consultez la section « Configuration du stockage externe ».
Pour télécharger un fichier de mappage sur Instana, procédez comme suit :
Dans l'interface utilisateur d' Instana, créez une configuration pour télécharger le fichier de mappage :
Go vers Sites web et applications mobiles > Applications mobiles.
Cliquez sur une application mobile. Le tableau de bord de l'application mobile s'affiche.
Cliquez sur Configuration > Conversion de trace de pile.
Figure 1. Vue des configurations de téléchargement de fichiers de mappage 
Cliquez sur Ajouter une configuration. La boîte de dialogue Nouvelle configuration de téléchargement de fichier de symboles s'affiche.
Dans la zone Description , entrez une description pour le téléchargement.
Cliquez sur Créer. La boîte de dialogue Modifier la configuration de téléchargement du fichier de symboles s'affiche. Utilisez les API REST Web affichées dans la boîte de dialogue pour télécharger le fichier de mappage. Voir l'étape 3.
Cliquez sur Sauvegarder. La configuration est sauvegardée.
Remarque : vous pouvez télécharger jusqu'à 1 024 configurations de carte source par application mobile. La capacité de stockage maximale pour les configurations de cartes source par application mobile est de 2 048 Mo. Pour augmenter cette limite, veuillez contacter le service d'assistance d' Instana.Compressez votre fichier de mappage ( mapping.txt ) dans un
.tgzfichier :tar czf <archive name>.tgz <mapping_file>Un exemple de la commande est présenté dans le fragment suivant:
tar czf your_app.mapping.tgz your_app.mapping.txtSi la taille du fichier compressé dépasse 10 Mo, divisez le fichier
.tgzen plusieurs objets BLOB (9 Mo chacun):split -b 9m <archive name>.tgz <file>.tgz_blob_Un exemple de la commande est présenté dans le fragment suivant:
split -b 9m your_mapping_file.tgz your_mapping_file.tgz_blob_Téléchargez le fichier via l' REST API Web Instana. Effectuez l'une des étapes suivantes :
Si le téléchargement contient plusieurs objets BLOB, exécutez:
curl -L -X PUT \ 'https://$UNIT-$TENANT.instana.io/api/mobile-app-monitoring/config/$MOBILE_APP_ID/sourcemap-upload/$UPLOAD_CONFIG_ID/form' \ -H 'authorization: apiToken $API_TOKEN' \ -F 'fileId="$IDENTIFIER_OF_APP_BUNDLE-$APP_VERSION, for example com.example.myapp-1.0.3"' \ -F 'fileType="R8PG_MAP"' \ -F 'blobIndex=1' \ -F 'sourceMap=@"$LOCAL_SYMBOLFILE_LOCATION"'Remarque : l' blobIndex e commence à 1, et non à 0. Pour chaque blob suivant, augmentez l' blobIndex e de 1.Si le téléchargement ne contient qu'un seul fichier, exécutez:
curl -L -X PUT \ 'https://$UNIT-$TENANT.instana.io/api/mobile-app-monitoring/config/$MOBILE_APP_ID/sourcemap-upload/$UPLOAD_CONFIG_ID/form' \ -H 'authorization: apiToken $API_TOKEN' \ -F 'fileId="$IDENTIFIER_OF_APP_BUNDLE-$APP_VERSION, for example com.example.myapp-1.0.3"' \ -F 'fileType="R8PG_MAP"' \ -F 'sourceMap=@"$LOCAL_SYMBOLFILE_LOCATION"'Si la taille du fichier compressé dépasse 10 Mo, un message d'erreur
request entity too larges'affiche. Voir l'étape 3.
Valider le téléchargement:
curl -L -X PUT \ 'https://$UNIT-$TENANT.instana.io/api/mobile-app-monitoring/config/$MOBILE_APP_ID/sourcemap-upload/$UPLOAD_CONFIG_ID/commit' \ -H 'authorization: apiToken $API_TOKEN' \ -F 'fileId="$IDENTIFIER_OF_APP_BUNDLE-$APP_VERSION, for example com.example.myapp-1.0.3"' \ -F 'fileType="R8PG_MAP"'
Téléchargez tous les blobs avant d'exécuter la commande de validation. Vous pouvez consulter le nombre de blobs téléchargés pour chaque carte source dans l'interface utilisateur d' Instana. Pour une carte source qui n'utilise pas le blobbing, le nombre de blobs est indiqué comme étant 1.
Success.
Suppression d'un fichier de mappage d' Instana
Pour supprimer un fichier de mappage d' Instana, procédez de l'une des manières suivantes :
Go Accédez à Sites Web et applications mobiles > Applications mobiles > Configuration > Traduction de la trace de pile, puis cliquez sur l'icône Supprimer en regard de la configuration.
Effectuez un appel via l' REST API. Un exemple de commande est présenté dans l'exemple suivant:
curl -L -X PUT \ 'https://$UNIT-$TENANT.instana.io/api/mobile-app-monitoring/config/$MOBILE_APP_ID/sourcemap-upload/$UPLOAD_CONFIG_ID/clear' \ -H 'authorization: apiToken $API_TOKEN'