Partilhar via


Android NDK

Importante

O Visual Studio App Center foi desativado em 31 de março de 2025, exceto para os recursos de Análise e Diagnóstico, que continuarão a ter suporte até 30 de junho de 2026. Mais informações.

O Android NDK permite que você implemente partes de seus aplicativos Android usando C e C++. Você pode usar a biblioteca cliente do Google Breakpad nos 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 que são 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 compilação.

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

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

Falhas não simbólicas

As falhas não simbólicas são exibidas na seção Diagnóstico do App Center para que você possa visualizar alguns detalhes antes mesmo de carregar símbolos. Os símbolos ausentes dessas falhas serão mostrados no separador "não simbolizado". Se os símbolos ausentes forem carregados, o grupo de falhas não simbolizado será substituído por um grupo de falhas simbolizado.

Observação

O App Center não suporta a simbologia de quadros provenientes de bibliotecas do sistema. Dado o elevado grau de fragmentação dos binários do sistema para Android e outras plataformas – que podem ser diferentes em qualquer combinação de versão do dispositivo/sistema operativo – o App Center não fornece símbolos para binários do sistema e omite automaticamente quadros dos binários do sistema durante a simbologização.

Gerar um arquivo .zip para carregar

Há duas maneiras de o App Center recuperar os símbolos necessários para a simbologia. 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 obj/local/$ABI/ diretório do projeto em um arquivo .zip.

Opção 2: Carregar símbolos do Breakpad

  1. Descarregue os símbolos usando o conjunto de ferramentas do Breakpad, como 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 estiver a carregar os seus símbolos a partir do macOS, então deve limpar os seus símbolos de quaisquer pastas desnecessárias, como por exemplo, __MACOS é gerado, e para excluir isto 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 Compilação 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 criar e distribuir automaticamente seu aplicativo para seus usuários finais, não precisará obter e carregar manualmente os arquivos de símbolo, conforme detalhado nas etapas abaixo.

App Center Portal

  1. Inicie sessão no App Center e selecione a sua aplicação.
  2. No menu à esquerda, navegue até a seção Diagnóstico e, em seguida, Problemas.
  3. Se seu aplicativo ainda não tiver relatado nenhuma falha, você precisará usar a API ou a CLI para carregar símbolos do Breakpad.
  4. Se a sua aplicação já relatou falhas que precisam de símbolos, verifique o separador Não simbolizado e deverá existir um grupo de versões com símbolos em falta, clique nele para revelar o menu para enviar o ficheiro.
  5. Depois que os símbolos forem indexados pelo App Center, as falhas serão simbolizadas para você.

App Center API

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

  1. Inicie uma POST solicitação para a API symbol_uploads. Esta chamada aloca espaço no nosso backend para o seu ficheiro e retorna uma propriedade symbol_upload_id e uma propriedade 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. Esta chamada carrega o arquivo para nossas contas de armazenamento de back-end. Saiba mais sobre cabeçalhos de solicitação de Blob PUT .
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. Faça uma PATCH solicitação à 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 carregamento 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

O carregamento de símbolos na API não funciona para ficheiros 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ímbolos para simbolizar totalmente os relatórios de falhas, as falhas são listadas na guia Não simbolizado . Os símbolos necessários são carregados a partir desta página se você tiver acesso a eles.

Se não conseguir carregar os símbolos, pode marcá-los como Ignorados selecionando linhas na tabela e clicando no botão Ignorar versões . Este botão instrui o App Center para processar os crashes e simbolizá-los da forma mais exaustiva possível com os símbolos nos arquivos. Quando terminarem o processamento, eles aparecerão na guia Falhas parcialmente simbolizados. Novas falhas que também dependem desses mesmos IDs de símbolo marcados como ignorados ignorarão a guia Não simbólica à medida que entram e fluem pelo sistema.