Desarrollo Android

visor de manifiesto · Lee las declaraciones y sus relaciones

Pega XML de texto: el análisis empieza tras 350 ms. Desactiva el modo automático para usar el botón o Ctrl/Cmd+Intro.

visor de manifiesto

XML del manifiesto

Resultado del análisis

Pega un AndroidManifest.xml en formato de texto o carga el ejemplo.

La entrada se procesa en esta pestaña del navegador y no se sube a un servidor.

Opciones

Solo se revisan las declaraciones de este XML. Se conservan texto, espacios y referencias existentes; no se evalúan la configuración de compilación ni el comportamiento en ejecución.

Pega un AndroidManifest.xml en formato de texto o carga el ejemplo.

Si una versión no se instala o solicita un permiso inesperado, conviene empezar por las declaraciones que contiene. Este visor de manifiesto agrupa los permisos y componentes, mantiene cada filtro ligado a su propietario y conserva las líneas de origen para volver al punto exacto del XML.

El archivo fuente y el manifiesto combinado representan etapas distintas de la compilación. Para revisar lo que se distribuye, utiliza XML combinado o decodificado del paquete final. Los valores de recursos y las variables pendientes se muestran tal como están, sin dar por resuelta información que falta.

Qué aclara el visor de manifiesto

Distingue cada punto de entrada

El visor de manifiesto separa solicitudes de permisos y definiciones propias. Dos filtros de intents de una misma actividad conservan sus acciones, categorías y atributos data por separado. Así puedes distinguir el inicio desde el lanzador de la entrada mediante un enlace web sin reconstruir relaciones entre etiquetas dispersas.

Un árbol de manifiesto conecta sus nodos con tarjetas de permisos, componentes y filtros de intents.

Comprueba la condición de cada aviso

Un exported ausente requiere conocer el SDK objetivo antes de aplicar la regla de Android 12. Los resultados distinguen una condición numérica cumplida de un objetivo desconocido y mantienen la línea fuente. Un debuggable explícito invita a revisar la versión; la ausencia de avisos no se presenta como garantía de seguridad.

Un componente con filtro de intents se conecta a una marca que señala su declaración exported ausente.

Revisa la versión correcta antes de exportar

01

Elige el documento adecuado

Gradle puede sustituir los niveles SDK y las bibliotecas pueden aportar permisos Android. Para una revisión de entrega, obtén primero el manifiesto final. Una referencia como @string/app_name necesita recursos externos para resolverse; esta página conserva esa diferencia entre una referencia y un valor concreto.

02

Controla cuándo se actualiza

El modo automático espera 350 ms después de cambiar el texto o la sangría. Al desactivarlo puedes ejecutar con Ctrl/Cmd+Intro. Los resultados anteriores no se pueden exportar mientras estén pendientes de actualizar. Cambiar entre Resumen, XML y JSON solo cambia la vista.

03

Copia el contenido que necesitas

Copiar desde Resumen devuelve el informe JSON completo, igual que la vista JSON, aunque cada lista muestre inicialmente 50 entradas. En XML se copia el documento formateado. Ejemplo y vaciado muestran una vista previa con recuentos; deshacer restaura juntos el texto y el resultado anteriores.

Atributos, relaciones y reglas concretas

Datos originales de aplicación y SDK

Consulta juntos los atributos de manifest, uses-sdk y application. Los campos ausentes no se rellenan y los recursos siguen siendo referencias. No se amplía .MainActivity a partir de package, porque el nombre final de clase también depende del namespace de la compilación.

Permisos y tipos de componentes

Se distinguen uses-permission, uses-permission-sdk-23 y permission, con atributos como maxSdkVersion y protectionLevel. Se extraen activity, activity-alias, service, receiver y provider directamente bajo application. Las declaraciones repetidas permanecen visibles sin combinarse ni eliminarse.

Diagnósticos con líneas de origen

Las reglas revisan el número de aplicaciones, nombres ausentes, orden de SDK, filtros sin action y prefijos android ligados incorrectamente. Con objetivo numérico de 31 o más, se comprueba exported en actividades, alias, servicios y receptores con filtros. La regla no se aplica a los proveedores.

XML conservador e informe JSON

Dos o cuatro espacios añaden sangría a contenedores sin texto directo. Los espacios existentes, comentarios y contenido mixto se conservan. Las listas aumentan de 50 en 50; el JSON exporta todos los atributos, líneas, relaciones y diagnósticos, incluidos los elementos todavía no mostrados.

Límites de lo que declara un solo archivo

Solo manifiestos XML de texto
Pega un documento XML 1.0 cuya raíz sea manifest sin espacio de nombres. La declaración de codificación puede ser UTF-8, UTF8 o estar ausente. APK, AXML binario y AAB requieren decodificación previa con herramientas Android. No hay importación de archivos ni carga desde URL.
Sin combinación ni resolución de recursos
No se ejecutan Gradle, las directivas tools:, las tablas de recursos ni los marcadores de posición. Los SDK pueden cambiar al compilar. El informe no inventa un objetivo ausente ni utiliza package para completar nombres relativos de componentes.
El texto existente tiene prioridad
Los saltos de línea y la sangría entre etiquetas también son texto XML. Un subárbol con texto directo, CDATA o espacios protegidos mantiene su disposición, por lo que elegir cuatro espacios puede no cambiar nada. Se crea una salida separada, sin modificar la entrada ni generar XML canónico.
Ningún dictamen de seguridad
Un permiso declarado no confirma su concesión en ejecución, y exported=true no demuestra una vulnerabilidad. allowBackup se muestra según su declaración. No se evalúan copias de seguridad efectivas, enlaces App Links por red ni ejecución de intents; tampoco se sustituye Android Lint o una prueba en dispositivo.
Tamaño y profundidad acotados
La entrada admite 500.000 unidades de código UTF-16, 20.000 nodos y profundidad 100. XML y JSON tienen cada uno un máximo de 2.000.000 de unidades. Algunos caracteres ocupan dos unidades. Superar cualquier límite detiene el análisis e impide exportar un resultado parcial.
Sin reparaciones automáticas
Los errores de sintaxis incluyen línea y columna para corregir el texto antes de repetir. DOCTYPE se rechaza y no se obtienen entidades externas ni direcciones de espacios de nombres. Decidir qué permiso quitar o qué valor exported corresponde requiere conocer el propósito de la aplicación.

Preguntas sobre el visor de manifiesto

¿Cómo puedo leer AndroidManifest.xml dentro de un APK?

El archivo de un APK suele usar AXML binario. Obtén XML legible con APK Analyzer de Android Studio o apkanalyzer manifest print y pégalo aquí. Renombrar el APK como ZIP permite acceder al archivo, pero no convierte su contenido a texto.

¿Por qué aparece un error de android:exported al instalar en Android 12?

Al apuntar a Android 12 o posterior, actividades, servicios y receptores con filtros necesitan un exported explícito. Este comprobador también incluye alias de actividad. Si el objetivo proporcionado es numérico y al menos 31, señala la ausencia; si es desconocido, muestra una nota condicionada. No decide automáticamente entre true y false.

¿Cuál es la diferencia entre uses-permission y permission?

uses-permission solicita acceso mediante un permiso existente. permission define un permiso que puede proteger componentes u operaciones. El informe conserva tipos distintos para ambos. La presencia de cualquiera de ellos no indica qué autorizaciones concedió un usuario en su dispositivo.

¿De dónde salen los permisos adicionales del manifiesto combinado?

Una biblioteca u otro conjunto de fuentes puede añadirlos al combinar los manifiestos. Esta página enumera lo incluido en el texto, pero no reconstruye su procedencia a partir de un único archivo combinado. La vista Merged Manifest de Android Studio y su informe de combinación permiten localizar la fuente.

¿En qué se diferencian minSdkVersion y targetSdkVersion?

minSdkVersion marca el nivel de API mínimo para instalar la app. targetSdkVersion determina el comportamiento de plataforma al que apunta. Aquí se leen los valores originales; Gradle puede suministrarlos o sustituirlos. Para decidir sobre una entrega, revisa el artefacto final y pruébalo en un dispositivo.

¿Alguna declaración se extrae de forma incorrecta?

Sigue las declaraciones del ejemplo

Abre el ejemplo del visor de manifiesto para comparar una solicitud de permiso con su definición y volver al componente señalado por un exported ausente.