Compartilhar via


Desobfuscamento do Android

Importante

O Visual Studio App Center foi desativado em 31 de março de 2025, com exceção dos recursos de Análise e Diagnóstico, que continuarão com suporte até 30 de junho de 2026. Saiba mais.

ProGuard, DexGuard e R8 são ferramentas para otimizar e ofuscar o código de aplicativos Android. Ele remove código não utilizado, renomeia classes, campos e métodos com nomes semanticamente obscuros, tornando a base de código menor e mais difícil de executar engenharia reversa. Para habilitar a ofuscação com ProGuard ou R8 em seu aplicativo Android, siga a documentação oficial do Android Developer.

Com o ProGuard, o DexGuard ou o R8 habilitados em seu aplicativo Android, os rastreamentos de pilha devem ser desobfuscados. O App Center desofusca automaticamente os rastros de pilha para seus aplicativos Java, Kotlin e React Native Android quando você carrega o arquivo mapping.txt criado em cada build. Esse arquivo mapeia os nomes de classes, métodos e campos originais para os nomes ofuscados, tornando os rastreamentos de pilha legíveis.

O serviço de Build e Distribuição do App Center pode gerar automaticamente arquivos de mapeamento e carregá-los no serviço de Diagnóstico. Se você usar o App Center para criar e distribuir automaticamente seu aplicativo para os usuários finais, não precisará obter e carregar manualmente os arquivos de mapeamento, conforme detalhado nas etapas abaixo.

Carregando o arquivo mapping.txt

App Center Portal

  1. Baixar o mapping.txt arquivo do diretório de build do módulo de aplicativo
  2. Faça logon no App Center e selecione seu aplicativo
  3. No menu à esquerda, navegue até a seção Diagnóstico
  4. Selecionar Mapeamentos
  5. Clique no botão Carregar mapeamentos no canto superior direito
  6. Preencha o Nome da Versão e o Código de Versão (eles devem corresponder à configuração do Gradle desse build para que o mapeamento funcione para um build específico)
  7. Carregue o arquivo do diretório de build do módulo do aplicativo mapping.txt.
  8. Clique no botão Salvar .

App Center API

O processo de carregamento de arquivos de mapeamento por meio da API envolve uma série de três chamadas à API: uma para alocar espaço em nosso back-end, uma para carregar o arquivo e outra para atualizar o status do upload. O corpo da primeira chamada à API deve definir symbol_type para AndroidProguard, build e version como as propriedades que correspondem ao Código de Versão e ao Nome da Versão, respectivamente, bem como um file_name.

  1. Dispare uma POST solicitação para a API de envio_de_símbolos. Essa chamada aloca espaço em nosso back-end para seu arquivo e retorna uma propriedade symbol_upload_id e uma 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 os 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 etapa inicial. No corpo da solicitação, especifique se deseja definir o status do upload para committed (concluído com êxito) o processo de upload 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 mapeamento:

appcenter crashes upload-mappings --mapping {mapping file} --version-name {version name} --version-code {version code}

Observação

O App Center não pode verificar se você carregou o arquivo certo mapping.txt . Recomendamos carregar o arquivo diretamente depois de criar o arquivo .apk ou enviá-lo por push para o repositório de código se você quiser carregá-lo mais tarde.

Envio do mapeamento de uma build no App Center

Se um build estiver configurado para produzir um mapping.txt arquivo, os builds do App Center produzirão o arquivo como um download disponível. Distribuir automaticamente o build ou distribuí-lo manualmente posteriormente encaminhará o mapping.txt arquivo para o Diagnóstico para desobfusar os relatórios de falha de entrada. Não é necessário carregar manualmente o mapping.txt arquivo depois de distribuir um build.

Excluindo um arquivo de mapeamento

  1. Faça uma GET solicitação para a API de symbols_list. Isso recupera as IDs dos arquivos de mapeamento que você carregou.
  2. Faça uma DELETE solicitação para a API symbols_upload com a ID do arquivo de mapeamento. Isso exclui o arquivo de mapeamento especificado.