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.
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
- Baixar o
mapping.txt
arquivo do diretório de build do módulo de aplicativo - Faça logon no App Center e selecione seu aplicativo
- No menu à esquerda, navegue até a seção Diagnóstico
- Selecionar Mapeamentos
- Clique no botão Carregar mapeamentos no canto superior direito
- 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)
- Carregue o
mapping.txt
arquivo do diretório de build do módulo de aplicativo. - 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_type
AndroidProguard
como , build
e version
propriedades que correspondem ao Código de Versão e ao Nome da Versão, respectivamente, bem como um file_name
.
- 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 umasymbol_upload_id
propriedade eupload_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}'
- Usando a
upload_url
propriedade retornada da primeira etapa, faça umaPUT
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}'
- Faça uma
PATCH
solicitação para a API symbol_uploads usando asymbol_upload_id
propriedade retornada da primeira etapa. No corpo da solicitação, especifique se deseja definir o status do upload comocommitted
(concluído com êxito) o processo de carregamento ouaborted
(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
- Faça uma
GET
solicitação para a API symbols_list. Isso recupera as IDs dos arquivos de mapeamento que você carregou. - 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.