Analisi dei crash delle app Android con i file di mappatura del codice sorgente
È possibile visualizzare i dettagli relativi agli arresti anomali delle app Android all'indirizzo Instana. I dettagli includono tracce di stack per tutti i thread attivi della tua app mobile. Queste tracce di stack contengono l'indirizzo di memoria e il nome della funzione non elaborata. È possibile utilizzare Instana per tradurre la traccia dello stack in informazioni significative.
Se il codice della tua app Android è offuscato, capire la traccia di stack è difficile. Se utilizzi un compilatore come ProGuard,, DexGuard, o R8 per ottimizzare e offuscare il codice, Instana può deoffuscare la traccia dello stack. Instana decodifica la traccia dello stack utilizzando il mapping.txt file del tuo progetto. Il file di associazione associa la classe, il metodo e i campi originali ai nomi offuscati che rendono leggibili le tracce di stack.
Per tradurre la traccia dello stack, carica il mapping.txt file su Instana. È possibile caricare un file di mappatura effettuando chiamate all' REST API. Una volta caricato il file di mappatura, nell'interfaccia utente di Instana vengono visualizzati ulteriori dettagli relativi al crash. Per visualizzare i dettagli, fare clic su Thread bloccati nella scheda Arresti anomali . Per ulteriori informazioni, consultare Arresti anomali.
Caricamento dei file di mappatura
Assicurarsi che i seguenti prerequisiti siano soddisfatti prima di caricare un file di associazione:
- Viene creato un token API con i permessi di configurazione abilitati per il monitoraggio delle app mobili. Per ulteriori informazioni, consultare la pagina " API : i token".
- I file delle mappe sorgente vengono archiviati per l'edizione personalizzata self-hosted ( Kubernetes o Red Hat OpenShift Container Platform ). Per ulteriori informazioni, consultare la sezione "Configurazione dell'archiviazione esterna".
Per caricare un file di mappatura su Instana, segui questi passaggi:
Nell'interfaccia utente di Instana, creare una configurazione per caricare il file di mappatura:
Go Vai a Siti web e app mobili > App mobili.
Fare clic su un'app mobile. Viene visualizzato il dashboard dell'applicazione mobile.
Fare clic su Configurazione > Conversione della traccia di stack.
Figura 1. Visualizzazione delle configurazioni di caricamento dei file di mappatura 
Fare clic su Aggiungi configurazione. Viene visualizzata la finestra di dialogo Nuova configurazione di caricamento file simbolo.
Nel campo Descrizione , immettere una descrizione per il caricamento.
Fai clic su Crea. Viene visualizzata la finestra di dialogo Modifica configurazione caricamento file simbolo. Utilizza le API REST web visualizzate nella finestra di dialogo per caricare il file di associazione. Fare riferimento al punto 3.
Fare clic su Salva. La configurazione viene salvata.
Nota: è possibile caricare fino a 1.024 configurazioni di mappe sorgente per ogni app mobile. Lo spazio massimo di archiviazione per le configurazioni delle mappe sorgente per ogni app mobile è di 2.048 MB. Per aumentare questo limite, contatta l'assistenza di Instana.Comprimi il tuo file di mappatura ( mapping.txt ) in un
.tgzfile:tar czf <archive name>.tgz <mapping_file>Un esempio del comando viene mostrato nel seguente frammento:
tar czf your_app.mapping.tgz your_app.mapping.txtSe la dimensione del file compresso supera i 10 MB, suddividere il file
.tgzin più blob (ogni 9 MB):split -b 9m <archive name>.tgz <file>.tgz_blob_Un esempio del comando viene mostrato nel seguente frammento:
split -b 9m your_mapping_file.tgz your_mapping_file.tgz_blob_Carica il file utilizzando l' REST API web Instana. Completare una delle seguenti procedure:
Se il caricamento contiene più blob, eseguire:
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"'Nota: l' blobIndex e parte da 1, non da 0. Per ogni blob successivo, aumenta l' blobIndex e di 1.Se il caricamento contiene un solo file, eseguire:
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"'Se la dimensione del file compresso supera i 10 MB, viene visualizzato un messaggio di errore
request entity too large. Fare riferimento al punto 3.
Caricamento commit:
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"'
Carica tutti i blob prima di eseguire il comando di commit. È possibile visualizzare il numero di blob caricati per ciascuna mappa sorgente nell'interfaccia utente di Instana. Per una mappa sorgente che non utilizza il blobbing, il numero di blob è indicato come 1.
Success.
Rimozione di un file di mappatura da Instana
Per rimuovere un file di mappatura da Instana, procedere in uno dei seguenti modi:
Go vai su Siti web e app mobili > App mobili > Configurazione > Traduzione della traccia dello stack, quindi clicca sull'icona Elimina accanto alla configurazione.
Effettua una chiamata tramite un web REST API. Nel seguente esempio viene mostrato un comando di esempio:
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'