Partilhar via


Android Desofuscação

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.

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 fazer engenharia reversa. Para ativar a ofuscação com ProGuard ou R8 em seu aplicativo Android, siga a documentação oficial do desenvolvedor Android.

Com o ProGuard, DexGuard ou R8 ativado no seu aplicativo Android, os seus vestígios de pilha devem ser desofuscados. O App Center desofusca automaticamente os rastreamentos de pilha para seus aplicativos Java, Kotlin e React Native Android quando você carrega o mapping.txt arquivo criado em cada compilação. Esse arquivo mapeia a classe, o método e os nomes de campo originais para os nomes ofuscados, tornando os rastreamentos de pilha legíveis.

O serviço de compilação e distribuição do App Center pode gerar automaticamente arquivos de mapeamento e carregá-los 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 mapeamento, conforme detalhado nas etapas abaixo.

Carregando o arquivo mapping.txt

App Center Portal

  1. Baixe o mapping.txt arquivo do diretório de compilação do módulo do aplicativo
  2. Inicie sessão no App Center e selecione a sua aplicação
  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 da Versão (estes devem corresponder à configuração Gradle dessa compilação para que o mapeamento funcione para uma compilação específica)
  7. Carregue o mapping.txt arquivo do diretório de compilação do módulo do aplicativo.
  8. Clique no botão Guardar.

App Center API

O processo de upload de arquivos de mapeamento por meio 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 outra para atualizar o status do upload. O corpo da primeira chamada de API deve definir symbol_type e as propriedades AndroidProguard, build e version, que correspondem ao Código da Versão e ao Nome da Versão, respectivamente, bem como a file_name.

  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 mapeamento:

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

Observação

O App Center não consegue verificar se carregou o ficheiro correto 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 quiser carregá-lo mais tarde.

Encaminhando o mapeamento de uma compilação no App Center

Se uma compilação estiver configurada para produzir um mapping.txt arquivo, as compilações do App Center produzirão o arquivo como um download disponível. Distribuir automaticamente a compilação ou distribuí-la manualmente mais tarde encaminhará o arquivo para o mapping.txt Diagnostics para ofuscar os relatórios de falhas recebidos. Não é necessário carregar manualmente o mapping.txt arquivo depois de distribuir uma compilação.

Excluindo um arquivo de mapeamento

  1. Faça uma GET solicitação à API symbols_list. Isso recupera as IDs dos arquivos de mapeamento carregados.
  2. Faça uma DELETE solicitação à API symbols_upload com o ID do ficheiro de mapeamento. Isso exclui o arquivo de mapeamento especificado.