La base para cualquier aplicación Android es el archivo AndroidManifest.xml que se encuentra en la raíz de directorios de cualquier proyecto. Dentro de este archivo se declara todo lo que se encuentre dentro de la aplicación – las actividades, los servicios, etc. – y cómo todas estas piezas interactúan entre sí y con el sistema. Podemos por ejemplo indicar qué actividad (o actividades) deben aparecer en el menú principal del dispositivo, también conocido como el launcher.

Cada vez que creamos un nuevo proyecto Android, obtendremos un archivo manifest inicial que se genera automáticamente, y que abarca los elementos básicos de una aplicación sencilla; la declaración de una actividad y nada más. Conforme aumente la complejidad de las funciones que queramos que realicen nuestras aplicaciones, este archivo irá creciendo en líneas de código y en declaraciones de elementos distintos.

La intención de este post es que tengamos muy en claro el rol tan importante que juega este archivo en la construcción de nuestras aplicaciones y cómo es que vamos a ir armándolo en este proceso de desarrollo.

Elementos básicos del AndroidManifest.xml

El elemento raíz de todos los archivos manifiestos es, obviamente, un elemento <manifest></manifest>:

Si observamos con atención, uno de los datos más importantes que debemos indicar en la declaración del manifiesto es el del atributo package que corresponde al espacio de nombres que definimos en el wizzard de creación del proyecto. En este ejemplo, nuestro package es com.helloactivity, que es el nombre del paquete Java que contiene el elemento raíz de nuestra aplicación, es decir, la actividad principal de arranque que necesitamos inicie siempre antes que las demás.

Posteriormente, para declarar cada una de las actividades deberemos seguir una convención de nombres que consiste en agarrar el nombre de la clase Java que representa la Activity y anteponerle un signo de punto. Por ejemplo, si quisiéramos hacer referencia a com.helloactivity.HolaActivity la declaración en el AndroidManifest.xml quedaría de la siguiente manera:

Esto es así porque ya habiendo declarado como root de paquete com.helloactivity sólo es como si estuviésemos completando ese espacio de nombres en la declaración de cada actividad.

Permisos, dispositivos y aplicaciones

Ahora vamos a conocer todos aquellos elementos que se encuentran dentro del AndroidManifest:

  • uses-permission: Como su nombre lo indica, este elemento declara los permisos que necesitará tu aplicación para funcionar de manera apropiada. Entre ellos podemos encontrar permisos para accesar al GPS del teléfono y a los datos de localización para que haga tal o cual función. En un post posterior, veremos con más detalle los tipos de permisos que podemos declarar en una aplicación Android.
  • permission: Este elemento declara los permisos que las actividades o servicios necesitan con el fin de mantener el buen uso de los datos de la aplicación o mantener la lógica de la misma.
  • instrumentation: Este elemento indica el código que deberá ser invocado cuando un evento clave del sistema sea llamado por el usuario, tales como el arranque de una actividad para propósitos de logueo o monitoreo.
  • application: Este elemento define las entrañas de la aplicación (nombre, actividad principal, icono, etc.) que el archivo AndroidManifest describe.

¿Y lo que hace nuestra aplicación Android?

El chiste del AndroidManifest.xml se encuentra en los elementos hijos de la etiqueta <application></application>.

Por default, cuando creamos un nuevo proyecto Android podemos ver una sencilla actividad declarada:

Este elemento declara en su atributo android:name el nombre de la clase que implementa la actividad. Luego nos encontramos con el atributo android:label para desplegar el nombre de la actividad que algunas veces encontraremos declarado desde el archivo res/values/strings.xml. Hay que observar que si este nombre será el mismo al del atributo anterior no es necesario anteponerle el punto. Por último y de manera frecuente nos encontraremos con un elemento hijo llamado intent-filter que describe bajo qué condiciones será desplegada esta actividad. Si observamos este ejemplo identificamos que hacemos una declaración para que esta actividad se cargue directamente en el launcher de Android, lo que hará que de forma automática, esta actividad sea la que aparezca en pantalla una vez que el usuario decida ejecutar la aplicación.

Hay que recordar que podemos tener tantas actividades como nos sean necesarias. También puedes tener uno o más elementos receiver que son las que definen qué actividades pueden ser lanzadas en determinadas circunstancias, tales como cuando llegue un SMS al teléfono.

De la misma forma puedes tener uno o más elementos provider indicando los content-providers que utilizará tu aplicación; éstos son componentes que se encargan de suministrar los datos que necesitan tus actividades y si lo permites, que también pueden consultar otras aplicaciones dentro de tu dispositivo. Estas preferencias se pueden incluir por medio de una base de datos o dentro de alguna API que cualquier aplicación puede utilizar.

Finalmente, otro de los elementos con los que te vas a encontrar son los servicios, que son procesos que se encuentran corriendo en el background y de manera independiente a otras actividades. El ejemplo más sencillo de servicios es el reproductor de MP3 que se mantiene en ejecución mientras realizas otras acciones en el teléfono.

Conforme vayamos avanzando en los conceptos básicos de Android abarcaremos el uso práctico de cada uno de estos elementos. De manera complementaria te invitamos a consultar un overview que abarcamos en el artículo “Entendiendo la estructura de un proyecto Android” y leer también “Activity en Android” que te ayudará a comprender aún más los conceptos básicos de las actividades de las aplicaciones.

Espero que este artículo te haya sido de ayuda, ¿alguna recomendación para futuros artículos técnicos? ¡Platícanos! :D

2 Responses to Conociendo el archivo AndroidManifest.xml

  1. Noe Rivas dice:

    Hola, estoy muy interezado en poder programar para dispositivos moviles (especialmente sobre la plataforma de Android).

    Me podrían recomendar algún curso(s) que se imparta en la Ciudad de México?.

    De antemano Gracias!!!!

  2. Chuche dice:

    Muy buena información.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>