Entendiendo el archivo AndroidManifest.xml | Original, traducido por IA

Home PDF

Si estás sumergiéndote en el desarrollo de Android, uno de los primeros archivos que encontrarás es el AndroidManifest.xml. Es como el plano de tu aplicación: le dice al sistema Android todo lo que necesita saber sobre tu aplicación antes de que incluso se ejecute. Hoy, desglosaremos un archivo de manifiesto de ejemplo de una aplicación llamada “Flower” (nombre del paquete: com.lzw.flower) y exploraremos sus componentes clave, conceptos y patrones.


¿Qué es el AndroidManifest.xml?

El archivo AndroidManifest.xml es un archivo de configuración requerido para cada aplicación de Android. Se encuentra en el directorio raíz de tu proyecto y declara información esencial como el nombre del paquete de la aplicación, permisos, componentes (por ejemplo, actividades) y características de hardware/software que necesita. Piensa en él como la tarjeta de identidad de la aplicación que lee el sistema operativo Android.

Vamos a recorrer el ejemplo paso a paso.


La estructura del manifiesto

Aquí está el manifiesto con el que estamos trabajando (slightly simplified for readability):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.lzw.flower"
    android:versionCode="8"
    android:versionName="1.5.2">

    <uses-sdk android:minSdkVersion="14" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <application
        android:label="@string/app_name"
        android:icon="@drawable/icon128"
        android:name=".base.App"
        android:theme="@style/AppTheme">

        <activity android:name=".deprecated.CameraActivity" android:screenOrientation="landscape" />
        <activity android:name=".base.SplashActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".draw.DrawActivity" android:screenOrientation="landscape" />
        <activity android:name=".result.ResultActivity" android:screenOrientation="landscape" />
        <activity android:name=".material.MaterialActivity" android:screenOrientation="landscape" />
        <activity android:name=".activity.PhotoActivity" android:screenOrientation="landscape" />
        <activity android:name=".activity.LoginActivity" android:screenOrientation="portrait" />
    </application>
</manifest>

Ahora, desglosémoslo en sus secciones principales y expliquemos los conceptos detrás de ellos.


1. El elemento raíz <manifest>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.lzw.flower"
    android:versionCode="8"
    android:versionName="1.5.2">

Concepto: La etiqueta <manifest> establece la identidad y la versión de la aplicación, asegurando que el sistema sepa con qué aplicación está tratando y cómo manejar las actualizaciones.


2. Versión del SDK con <uses-sdk>

<uses-sdk android:minSdkVersion="14" />

Concepto: Esto asegura la compatibilidad. Los dispositivos que ejecutan versiones de Android inferiores a 4.0 no pueden instalar esta aplicación. No hay targetSdkVersion o maxSdkVersion aquí, pero podrían añadirse para afinar la compatibilidad aún más.


3. Permisos con <uses-permission>

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

Esta aplicación solicita varios permisos:

Concepto: Android utiliza un sistema de permisos para proteger la privacidad y la seguridad del usuario. Estas declaraciones le dicen al sistema (y al usuario) qué características sensibles necesita la aplicación. A partir de Android 6.0 (API 23), los permisos peligrosos (como CAMERA) también requieren solicitudes en tiempo de ejecución en el código de la aplicación.


4. Características con <uses-feature>

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

Concepto: A diferencia de los permisos, las etiquetas <uses-feature> filtran la aplicación en la Google Play Store. Si un dispositivo carece de una cámara o autofoco, la aplicación ni siquiera aparecerá como instalable a menos que estas se marquen como opcionales con android:required="false".


5. El elemento <application>

<application
    android:label="@string/app_name"
    android:icon="@drawable/icon128"
    android:name=".base.App"
    android:theme="@style/AppTheme">

Concepto: La etiqueta <application> define la configuración de la aplicación en general. Los recursos como @string y @drawable se almacenan en carpetas res/, promoviendo la reutilización y la localización.


6. Actividades con <activity>

El manifiesto enumera varias actividades, que son las pantallas de la interfaz de usuario de la aplicación:

Ejemplo 1: Pantalla de inicio (Actividad de lanzador)

<activity
    android:name=".base.SplashActivity"
    android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Patrón: La actividad de lanzador es un punto de partida común, a menudo una pantalla de inicio o pantalla de inicio.

Ejemplo 2: Actividad de la cámara

<activity
    android:name=".deprecated.CameraActivity"
    android:screenOrientation="landscape">

Patrón: Las actividades a menudo imponen la orientación para casos de uso específicos (por ejemplo, las aplicaciones de cámara funcionan mejor en modo paisaje).

Otras actividades

El manifiesto enumera más actividades como DrawActivity, ResultActivity, PhotoActivity, etc., con patrones similares:

Concepto: Las actividades son los bloques de construcción de la interfaz de usuario de una aplicación de Android. Cada etiqueta <activity> registra una pantalla con el sistema.


Patrones clave en este manifiesto

  1. Diseño centrado en medios: Los permisos y características para la cámara, almacenamiento y autofoco sugieren una aplicación de fotos o dibujo (quizás identificando flores, dado el nombre del paquete com.lzw.flower).
  2. Control de orientación: El uso intensivo de android:screenOrientation="landscape" sugiere un enfoque en tareas visuales.
  3. Actividades modulares: Múltiples actividades (CameraActivity, DrawActivity, ResultActivity) indican un flujo de trabajo de varios pasos.
  4. Uso de recursos: Referencias a @string, @drawable y @style muestran una estructura limpia y mantenible.

Conclusión

El AndroidManifest.xml es más que solo un archivo de configuración: es una ventana a la finalidad y comportamiento de una aplicación. En este caso, “Flower” parece ser una aplicación multimedia con funcionalidad de cámara, características de dibujo y capacidades de red, posiblemente para subir o procesar imágenes. Al entender sus componentes: permisos, características y actividades, puedes ver cómo se estructuran las aplicaciones de Android y cómo diseñar las tuyas propias.

¿Quieres construir algo similar? Empieza con un propósito claro (como la identificación de flores), define tus permisos y características, y traza tus actividades. El manifiesto lo unirá todo!


Back 2025.04.02 Donate