Partilhar via


Desobfuscação 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.

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

Com o ProGuard, o DexGuard ou o R8 habilitados em seu aplicativo Android, os rastreamentos de pilha devem ser desobfuscados. O App Center desobfusifica automaticamente os rastreamentos de pilha para seus aplicativos Java, Kotlin e React Native Android quando você carrega o mapping.txt arquivo criado em cada build. Esse arquivo mapeia os nomes de classe, método e campo 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 compilar e distribuir automaticamente seu aplicativo para os usuários finais, não será necessário obter e carregar manualmente os arquivos de mapeamento, conforme detalhado nas etapas abaixo.

Carregando o arquivo de 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 mapping.txt arquivo do diretório de build do módulo de aplicativo.
  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, outra para carregar o arquivo e outra para atualizar o status do upload. O corpo da primeira chamada à API deve definir symbol_typeAndroidProguardcomo , build e version 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 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 mapeamento:

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

Observação

O App Center não poderá marcar se você carregou o arquivo certomapping.txt. É recomendável 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.

Encaminhando o mapeamento de um 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 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 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.