Desenvolvimento Android

visualizador de manifesto · Leia as declarações com seu contexto

Cole XML em texto: a análise começa após 350 ms. Desative o modo automático para usar o botão ou Ctrl/Cmd+Enter.

visualizador de manifesto

XML do manifesto

Resultado da análise

Cole um AndroidManifest.xml em texto ou carregue o exemplo.

A entrada é processada nesta aba do navegador, sem envio a um servidor.

Opções

Somente as declarações deste XML são verificadas. Texto, espaços e referências existentes são preservados; a configuração de build e o comportamento em execução não são avaliados.

Cole um AndroidManifest.xml em texto ou carregue o exemplo.

Um app pode falhar ao instalar ou apresentar uma permissão que ninguém adicionou diretamente. O visualizador de manifesto organiza as declarações e mantém cada filtro associado ao componente de origem. Os números de linha ajudam a conferir o trecho do XML que explica o resultado.

O manifesto do código-fonte e o manifesto mesclado retratam momentos diferentes do build. Para revisar o que será distribuído, use o XML final mesclado ou decodificado. Referências de recursos continuam visíveis, sem transformar uma dependência de configuração em um valor supostamente conhecido.

O que o visualizador de manifesto ajuda a esclarecer

Separar acesso solicitado de permissão definida

O visualizador de manifesto distingue uses-permission de permission e organiza os componentes por tipo. Se uma atividade tiver dois filtros de intent, cada um mantém suas próprias ações, categorias e propriedades data. Fica mais fácil comparar a entrada pelo ícone com a entrada por link sem misturar suas condições.

Uma árvore de manifesto liga nós a cartões de permissões, componentes e filtros de intent.

Ler o aviso junto da condição

Um exported ausente só recebe o diagnóstico da versão quando o SDK de destino numérico satisfaz a condição. Se o destino for desconhecido, aparece uma observação condicional. Um debuggable explicitamente ativado pede revisão do build; uma lista vazia de avisos não é apresentada como prova de segurança.

Um componente com filtro de intent aponta para um marcador da declaração exported que está faltando.

Escolha a origem e leve o relatório completo

01

Confira a etapa do build

Gradle pode substituir níveis de SDK e bibliotecas podem adicionar permissões Android. Para uma entrega, obtenha primeiro o manifesto final. Valores como @string/app_name ou marcadores de posição permanecem sem resolução porque dependem de arquivos e configurações que não estão na entrada.

02

Decida quando atualizar

No modo automático, mudanças no texto ou no recuo aguardam 350 ms antes da análise. Desative-o para executar com Ctrl/Cmd+Enter. Um resultado antigo não pode ser copiado nem baixado até ficar atualizado. Alternar Resumo, XML e JSON muda apenas a apresentação.

03

Diferencie a lista do arquivo exportado

Copiar no Resumo devolve o JSON completo, assim como a visualização JSON, mesmo que só apareçam 50 itens de uma lista. No modo XML, a cópia usa o XML formatado. Exemplo e limpeza exibem uma prévia com contagem de caracteres; desfazer restaura entrada e resultado juntos.

Valores originais, vínculos e verificações

Atributos do app e dos SDKs

Veja manifest, uses-sdk e application em um só resumo. Campos ausentes não são preenchidos e recursos continuam como referências. Um nome relativo como .MainActivity não é expandido com package, pois o nome completo da classe também depende do namespace usado no build.

Permissões e componentes por tipo

O relatório separa uses-permission, uses-permission-sdk-23 e permission e preserva atributos como maxSdkVersion e protectionLevel. São extraídos activity, activity-alias, service, receiver e provider diretamente sob application. Declarações repetidas permanecem presentes, sem remoção ou mesclagem automática.

Regras limitadas com linha de origem

As verificações cobrem quantidade de applications, nomes ausentes, ordem dos SDKs, filtros sem action e prefixos android vinculados incorretamente. Com destino numérico a partir de 31, a regra de exported cobre atividades, aliases, serviços e receivers com filtros. Providers não entram nessa condição.

XML preservado e JSON completo

Selecione dois ou quatro espaços para acrescentar recuo em contêineres sem texto direto. Espaços existentes, comentários e conteúdo misto são preservados. As listas mostram mais 50 entradas por vez; o JSON exportado inclui atributos, linhas, vínculos e diagnósticos de todo o resultado.

Limites de uma inspeção do documento

Somente manifesto em XML de texto
Use um documento XML 1.0 com raiz manifest sem namespace. A declaração de codificação pode ser UTF-8, UTF8 ou estar ausente. APK, AXML binário e AAB precisam ser decodificados antes com ferramentas Android. Não há importação de arquivo nem leitura por URL.
Sem mesclagem ou resolução de recursos
Gradle, diretivas tools:, tabelas de recursos e marcadores de posição não são executados. Os SDKs podem ser substituídos durante o build. O relatório não adivinha um destino ausente nem usa package para completar nomes relativos de componentes.
O texto existente tem prioridade
Quebras de linha e espaços entre tags também são texto XML. Subárvores com texto direto, CDATA ou preservação de espaço mantêm o formato original. Por isso, trocar para quatro espaços pode não mudar a aparência. A formatação gera uma saída separada, sem alterar a entrada ou produzir XML canônico.
Avisos não são uma auditoria de segurança
Uma permissão declarada não comprova autorização em tempo de execução; exported=true não comprova uma falha explorável. allowBackup é mostrado como declarado. Políticas efetivas de backup, validação de App Links pela rede, execução de intents, Android Lint completo e testes em aparelho ficam fora desta análise.
Limites de tamanho e estrutura
A entrada permite 500.000 unidades de código UTF-16, 20.000 nós e profundidade 100. XML e JSON permitem até 2.000.000 de unidades cada. Alguns caracteres usam duas unidades. Ultrapassar um limite interrompe a análise e impede baixar uma saída parcial.
Nenhum conserto automático
Erros de sintaxe conservam linha e coluna para você corrigir o texto e analisar novamente. DOCTYPE é recusado, e nenhuma entidade externa ou endereço de namespace é carregado. Decidir qual permissão remover ou qual valor exported usar depende da finalidade do app.

Perguntas sobre o visualizador de manifesto

Como ler o AndroidManifest.xml que está dentro de um APK?

O AndroidManifest.xml de um APK normalmente está em AXML binário. Use o APK Analyzer do Android Studio ou apkanalyzer manifest print para obter XML legível e cole o resultado aqui. Renomear o APK para ZIP dá acesso ao arquivo, mas não faz a decodificação.

Por que o Android 12 exige um valor explícito para android:exported?

Apps direcionados ao Android 12 ou posterior precisam declarar exported em atividades, serviços e receivers com filtros de intent. Esta verificação inclui aliases de atividade. Um destino numérico de 31 ou mais ativa o diagnóstico de ausência; um destino desconhecido gera uma observação condicional, sem escolher true ou false automaticamente.

Por que declarar permissões no AndroidManifest.xml não basta para o app funcionar?

Declarar uses-permission informa o acesso de que o app precisa, mas certas permissões também exigem pedido e consentimento durante a execução. O usuário pode negar ou revogar esse acesso. Esta página mostra as declarações do arquivo, não as permissões concedidas em um aparelho.

De onde vêm as permissões extras do manifesto mesclado?

Bibliotecas e outros conjuntos de fontes podem contribuir com declarações durante a mesclagem. O relatório lista o documento fornecido, mas não recupera a origem de cada item a partir de um arquivo já mesclado. Confira a visualização Merged Manifest do Android Studio e o relatório de mesclagem.

Qual é a diferença entre minSdkVersion e targetSdkVersion?

minSdkVersion indica a menor API necessária para instalar o app. targetSdkVersion define o comportamento de plataforma que ele tem como alvo. Aqui são exibidos os valores originais do XML. Gradle pode defini-los ou substituí-los, então confira o build final antes de concluir algo sobre a versão distribuída.

Uma declaração foi extraída incorretamente?

Explore as declarações do exemplo

Use o exemplo do visualizador de manifesto para distinguir uma solicitação de permissão de uma definição e encontrar, pela linha de origem, o componente sem exported.