Condividi tramite


Android NDK

Importante

Visual Studio App Center è previsto per il ritiro il 31 marzo 2025. Anche se è possibile continuare a usare Visual Studio App Center fino a quando non viene completamente ritirato, esistono diverse alternative consigliate che è possibile considerare la migrazione a.

Altre informazioni sulle sequenze temporali di supporto e sulle alternative.

Android NDK consente di implementare parti delle app Android usando C e C++. È possibile usare la libreria client google Breakpad per le app Android per ricevere tracce di stack valide nel codice nativo. Le tracce dello stack possono contenere solo indirizzi di memoria. Non mostrano nomi di classe, metodi, nomi di file e numeri di riga necessari per leggere e comprendere gli arresti anomali. Per ottenere gli indirizzi di memoria tradotti per l'app Android NDK, è necessario caricare i simboli dell'applicazione per ogni compilazione.

Per informazioni su come segnalare gli arresti anomali di NDK, vedere la documentazione di Android SDK per le app Android o la documentazione di Unity SDK per le app Unity.

Per inviare arresti anomali del breakpad da altre piattaforme a App Center, vedere la documentazione di caricamento degli arresti anomali personalizzati.

Arresti anomali nonmbolicati

Gli arresti anomali nonmbolicati vengono visualizzati nella sezione Diagnostica di App Center, in modo da poter visualizzare alcuni dettagli anche prima del caricamento dei simboli. I simboli mancanti di questi arresti anomali verranno visualizzati nella scheda "unsymbolicated". Se vengono caricati i simboli mancanti, il gruppo di arresto anomalo nonmbolicato verrà sostituito da un gruppo di arresto anomalo simbolico.

Nota

App Center non supporta la simbolicità dei frame provenienti dalle librerie di sistema. Dato che la frammentazione elevata dei file binari di sistema per Android e altre piattaforme, che potrebbero essere diverse in qualsiasi combinazione di versioni del dispositivo/sistema operativo, App Center non fornisce simboli per i file binari di sistema e ignora automaticamente i fotogrammi dai file binari di sistema in simbolica.

Generare un file .zip da caricare

Esistono due modi per recuperare i simboli necessari per la simbolicazione. App Center può generarli dai file binari nativi usati nel progetto oppure è possibile caricare direttamente i simboli del blocco di interruzione.

Opzione 1: Caricare file binari nativi

Inserire tutti i file con estensione so dalla directory del obj/local/$ABI/ progetto in un file di .zip.

Opzione 2: Caricare i simboli del blocco di interruzione

  1. Eseguire il dump dei simboli usando la toolchain Breakpad come descritto nella documentazione di Breakpad nella sezione "Ottenere i simboli di debug".
  2. Creare un file disymbols.zip con la struttura seguente:

Nota

Se si caricano i simboli da macOS, è necessario pulire i simboli di tutte le cartelle extranee, ad esempio __MACOS viene generato e per eliminare questo è possibile usare zip -d <symbols.zip> __MACOSX/\*.

$ unzip -l symbols.zip
Archive:  symbols.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  07-22-13 15:07   symbols/
        0  07-22-13 15:07   symbols/libnative.so/
        0  07-22-13 15:07   symbols/libnative.so/EAC901FB6DDCCE8AED89E1A8E4A58360/
    12468  07-22-13 15:07   symbols/libnative.so/EAC901FB6DDCCE8AED89E1A8E4A58360/libnative.so.sym
        0  07-22-13 15:07   symbols/libnative.so/FDC5C9E715C4F16408C0B78F95855BF0/
    12467  07-22-13 15:07   symbols/libnative.so/FDC5C9E715C4F16408C0B78F95855BF0/libnative.so.sym
 --------                   -------
    24935                   6 files

Caricamento di simboli

Nota

Il servizio Compilazione e distribuzione di App Center può inoltrare automaticamente i simboli al servizio Diagnostica. Se si usa App Center per compilare e distribuire automaticamente l'app agli utenti finali, non è necessario ottenere manualmente e caricare i file di simboli come descritto nei passaggi seguenti.

Portale di App Center

  1. Accedere ad App Center e selezionare l'app.
  2. Nel menu a sinistra passare alla sezione Diagnostica , quindi Problemi.
  3. Se l'applicazione non ha ancora segnalato alcun arresto anomalo, è necessario usare l'API o l'interfaccia della riga di comando per caricare i simboli del blocco di interruzione.
  4. Se l'applicazione ha già segnalato arresti anomali che richiedono simboli, selezionare la scheda Unsymbolicated e deve essere presente un gruppo di versioni con simboli mancanti, fare clic su di esso per visualizzare il menu per caricare il file.
  5. Dopo che i simboli vengono indicizzati da App Center, gli arresti anomali verranno simbolici per te.

App Center API

Il processo di caricamento dei simboli tramite l'API prevede una serie di tre chiamate API: una per allocare spazio nel back-end, una per caricare il file e una per aggiornare lo stato del caricamento. Il corpo della prima chiamata API deve essere impostato symbol_type su Breakpad.

  1. Attivare una POST richiesta all'API symbol_uploads. Questa chiamata alloca lo spazio nel back-end per il file e restituisce una symbol_upload_idupload_url proprietà.
curl -X POST 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{JSON BODY}'
  1. Usando la upload_url proprietà restituita dal primo passaggio, effettuare una PUT richiesta con l'intestazione e "x-ms-blob-type: BlockBlob" specificare il percorso del file su disco. Questa chiamata carica il file negli account di archiviazione back-end. Altre informazioni sulle intestazioni di richiesta BLOB PUT .
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. Effettuare una PATCH richiesta all'API symbol_uploads usando la symbol_upload_id proprietà restituita dal primo passaggio. Nel corpo della richiesta specificare se si vuole impostare lo stato del caricamento su committed (completato correttamente) il processo di caricamento o aborted (completato senza esito positivo).
curl -X PATCH 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads/{symbol_upload_id}' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{ "status": "committed" }'

Nota

L'API di caricamento dei simboli non funziona per i file di dimensioni superiori a 256 MB. Usare l'interfaccia della riga di comando di App Center per caricare questi file. È possibile installare l'interfaccia della riga di comando di App Center seguendo le istruzioni nel repository dell'interfaccia della riga di comando di App Center.

Interfaccia della riga di comando di App Center

È anche possibile usare l'interfaccia della riga di comando per caricare i file di simboli:

appcenter crashes upload-symbols --breakpad {symbols file}

Ignora i simboli

Quando App Center non dispone di tutti i file di simboli per creare report di arresto anomalo completamente simbolici, gli arresti anomali vengono elencati nella scheda Unsymbolicated . I simboli obbligatori vengono caricati da questa pagina se si ha accesso a loro.

Se non è possibile caricare i simboli, è possibile contrassegnarli come Ignorati selezionando le righe nella tabella e facendo clic sul pulsante Ignora versioni . Questo pulsante indica a App Center di elaborare gli arresti anomali e simbolici come possibile con i simboli nel file. Al termine dell'elaborazione, verranno visualizzati nella scheda Arresti anomali parzialmente simbolici. I nuovi arresti anomali che dipendono anche dagli STESSI ID simboli contrassegnati come ignorati ignorano la scheda Unsymbolicated mentre arrivano e passano attraverso il sistema.