El fichero AndroidManifest.xml, que debe tener cualquier aplicación Android en su carpeta principal, contiene información que debe conocer el sistema sobre la aplicación. Entre otras cosas contiene lo siguiente:

  • Nombre del paquete Java para la aplicación. Este nombre sirve como un identificador único de la aplicación.
  • Describe los componentes de la aplicación (activities, services, broadcast receivers y content providers). Se nombran las clases que los implementan y se publican sus capacidades. Así el sistema puede conocer los componentes que hay y bajo qué condiciones se iniciarán.
  • Declara los permisos que la aplicación debe tener para poder acceder a determinadas parter protegidas de la API o para interactuar con otras aplicaciones.
  • Lista las clases Instrumentation que permiten monitorizar la interacción de la aplicación con el sistema. Estas declaraciones sólo se usarán mientras la aplicación está en la fase de desarrollo, y se eliminarán antes de publicarla.
  • Declara el nivel mínimo de la API Android que requiere la aplicación.
  • Lista las bibliotecas con las que la aplicación debe estar enlazada.

El archivo que genera de forma automática Android Studio al generar un proyecto nuevo contiene las siguientes líneas que han sido comentadas:

<?xml version="1.0" encoding="utf-8"?>

<!-- manifest: Es el elemento raíz del archivo manifest.xml. Al menos debe contener un elemento <application> y especificar los atributos xmlns:android y package -->
<!-- xmlns:android: Define el espacio de nombre de Android. Debe ser siempre el mismo -->
<!-- package: Nombre de paquete de la aplicación -->
<!-- versionCode: Número de versión interno de la aplicación. Se usa para determinar si una versión es más moderna que otra. Este número no se muestra a los usuarios -->
<!-- versionName: Número de versión que se muestra a los usuarios -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="es.javiergarbedo.holamundo"
android:versionCode="1"
android:versionName="1.0" >
<!-- uses-sdk: Define la compatibilidad de la aplicación con las versiones Android -->
<!-- minSdkVersion: Versión mínima de la API requerida para ejecutar la aplicación -->
<!-- targetSdkVersion: Versión de la API hacia la que va dirigida la aplicación. Informa que se ha probado la aplicación con esa versión sin ninguna incompatibilidad -->
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="16" />

<!-- application: Contiene subelementos que declaran los componentes de la aplicación -->
<!-- allowBackup: Permite que el sistema haga copia de seguridad de la aplicación -->
<!-- icon: Icono de la aplicación -->
<!-- label: Nombre de la aplicación -->
<!-- theme: Tema que contiene los estilos a usar por la aplicación -->
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >

<!-- activity: Declara una activity (interfaz visual del usuario) -->
<!-- name: Nombre de la clase Java que implementa la activity -->
<!-- label: Título de la activity que se mostrará al usuario -->
<activity
android:name="es.javiergarbedo.holamundo.MainActivity"
android:label="@string/app_name" >

<!-- intent-filter: Especifica qué puede hacer la activity -->
<intent-filter>

<!-- action name: Nombre de la acción a realizar con la activity -->
<!-- android.intent.action.MAIN: Permite que la activity sea ejecutada como activity principal de la aplicación -->
<action android:name="android.intent.action.MAIN" />

<!-- category: Añade un nombre de categoría a la activity -->
<!-- android.intent.category.LAUNCHER: Crea un lanzador para la activity en la lista de aplicaciones del dispositivo -->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

La estructura general de este archivo, haciendo referencia a todos los elementos que puede contener, es la siguiente:

<?xml version="1.0" encoding="utf-8"?>

<manifest>

    <uses-permission />
    <permission />
    <permission-tree />
    <permission-group />
    <instrumentation />
    <uses-sdk />
    <uses-configuration />  
    <uses-feature />  
    <supports-screens />  
    <compatible-screens />  
    <supports-gl-texture />  

    <application>

        <activity>
            <intent-filter>
                <action />
                <category />
                <data />
            </intent-filter>
            <meta-data />
        </activity>

        <activity-alias>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </activity-alias>

        <service>
            <intent-filter> . . . </intent-filter>
            <meta-data/>
        </service>

        <receiver>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </receiver>

        <provider>
            <grant-uri-permission />
            <meta-data />
            <path-permission />
        </provider>

        <uses-library />

    </application>

</manifest>

En la página de developer.android.com puedes encontrar más información sobre este archivo y los elementos que puede contener: http://developer.android.com/guide/topics/manifest/manifest-intro.html