NDK do Android

Importante

O Visual Studio App Center está programado para ser desativado em 31 de março de 2025. Embora você possa continuar a usar o Visual Studio App Center até que ele seja totalmente desativado, há várias alternativas recomendadas para as quais você pode considerar migrar.

Saiba mais sobre linhas do tempo e alternativas de suporte.

O NDK do Android permite que você implemente partes de seus aplicativos Android usando C e C++. Você pode usar a biblioteca de clientes do Google Breakpad para seus aplicativos Android para receber rastreamentos de pilha válidos em código nativo. Os rastreamentos de pilha podem conter apenas endereços de memória. Eles não mostram nomes de classe, métodos, nomes de arquivo e números de linha necessários para ler e entender as falhas. Para obter os endereços de memória traduzidos para seu aplicativo NDK android, você deve carregar símbolos de aplicativo para cada build.

Para saber como relatar falhas do NDK, consulte a documentação do SDK do Android para aplicativos Android ou a documentação do SDK do Unity para aplicativos do Unity.

Se você quiser enviar falhas de Breakpad de outras plataformas para o App Center, consulte a documentação carregar falhas personalizadas.

Falhas não sínplicadas

Falhas não modificadas são exibidas na seção Diagnóstico do App Center para que você possa exibir alguns detalhes antes mesmo de carregar símbolos. Os símbolos ausentes dessas falhas serão mostrados na guia "sem saturação". Se os símbolos ausentes forem carregados, o grupo de falhas não síndico será substituído por um grupo de falhas simbólico.

Observação

O App Center não dá suporte à simbólica de quadros provenientes de bibliotecas do sistema. Dada a alta fragmentação de binários do sistema para Android e outras plataformas – que podem ser diferentes em qualquer combinação de versão de dispositivo/sistema operacional – o App Center não fornece símbolos em si para binários do sistema e ignora automaticamente quadros de binários do sistema em simbolização.

Gerar um arquivo de .zip para carregar

Há duas maneiras de o App Center recuperar os símbolos necessários para a simbólica. O App Center pode gerá-los a partir dos binários nativos usados em seu projeto ou você pode carregar os símbolos do Breakpad diretamente.

Opção 1: carregar binários nativos

Coloque todos os arquivos .so do diretório do obj/local/$ABI/ projeto em um arquivo .zip.

Opção 2: Carregar símbolos de breakpad

  1. Despeje os símbolos usando a cadeia de ferramentas do Breakpad conforme descrito na documentação do Breakpad na seção "Obter os símbolos de depuração".
  2. Crie um arquivo symbols.zip com a seguinte estrutura:

Observação

Se você estiver carregando seus símbolos do macOS, deverá limpo seus símbolos de pastas desnecessárias, por exemplo, __MACOS é gerado e, para excluí-lo, você pode usar 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

Carregando símbolos

Observação

O serviço de Build e Distribuição do App Center pode encaminhar automaticamente símbolos para o serviço de Diagnóstico. Se você usar o App Center para compilar e distribuir automaticamente seu aplicativo para os usuários finais, não será necessário obter e carregar manualmente os arquivos de símbolo, conforme detalhado nas etapas abaixo.

App Center Portal

  1. Faça logon no App Center e selecione seu aplicativo.
  2. No menu à esquerda, navegue até a seção Diagnóstico e, em seguida, Problemas.
  3. Se o aplicativo ainda não tiver relatado nenhuma falha, você precisará usar a API ou a CLI para carregar símbolos de Breakpad.
  4. Se o aplicativo já tiver relatado falhas que precisam de símbolos, marcar a guia Não Sincronizado e deve haver um grupo de versões com símbolos ausentes, clique nele para revelar o menu para carregar o arquivo.
  5. Depois que os símbolos forem indexados pelo App Center, as falhas serão simbólicas para você.

App Center API

O processo de carregamento de símbolos por meio da API envolve uma série de três chamadas à API: uma para alocar espaço em nosso back-end, outra para carregar o arquivo e outra para atualizar o status do upload. O corpo da primeira chamada à API deve ser definido symbol_typeBreakpadcomo .

  1. Dispare uma POST solicitação para a API do symbol_uploads. Essa chamada aloca espaço em nosso back-end para o arquivo e retorna uma symbol_upload_id propriedade e upload_url .
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 a upload_url propriedade retornada da primeira etapa, faça uma PUT solicitação com o cabeçalho : "x-ms-blob-type: BlockBlob" e forneça o local do arquivo no disco. Essa chamada carrega o arquivo em nossas contas de armazenamento de back-end. Saiba mais sobre cabeçalhos de solicitação put blob .
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. Faça uma PATCH solicitação para a API symbol_uploads usando a symbol_upload_id propriedade retornada da primeira etapa. No corpo da solicitação, especifique se deseja definir o status do upload como committed (concluído com êxito) o processo de carregamento ou aborted (concluído sem êxito).
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" }'

Observação

A API de uploads de símbolo não funciona para arquivos maiores que 256 MB. Use a CLI do App Center para carregar esses arquivos. Você pode instalar a CLI do App Center seguindo as instruções em nosso repositório da CLI do App Center.

App Center CLI

Você também pode usar a CLI para carregar arquivos de símbolo:

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

Ignorando símbolos

Quando o App Center não tem todos os arquivos de símbolo para simbolizar totalmente os relatórios de falha, as falhas são listadas na guia Não Sincronizado . Os símbolos necessários serão carregados nesta página se você tiver acesso a eles.

Se você não conseguir carregar os símbolos, poderá marcá-los como Ignorados selecionando linhas na tabela e clicando no botão Ignorar versões . Esse botão instrui o App Center a processar as falhas e simbolizá-las o máximo possível com os símbolos no arquivo. Depois de terminar o processamento, eles aparecerão na guia Falhas parcialmente simbólica. Novas falhas que também dependem dessas mesmas IDs de símbolo marcadas como ignoradas ignorarão a guia Não Smbolicada conforme elas entram e fluem pelo sistema.