sábado, 31 de diciembre de 2011

3.1.- El archivo AndroidManifest.xml - Primera parte

Vamos a ver con un poco más de detalle lo que contiene el archivo AndroidManifest.xml y lo que podemos hacer con él.

Todos los proyectos de android tienen el archivo AndroidManifest.xml, este archivo es usado por el sistema para determinar la configuración de la aplicación, su nombre, la activity que se lanza por defecto y los permisos que necesita la aplicación, entre otros. También es utilizado por el sistema para controlar las actualizaciones, mostrar detalles al
usuario, manejar permisos, etc. También declara los permisos que otros necesitan para interactuar con los componentes de la aplicación, y además contiene una lista de las librerías (o bibliotecas) con las que se tiene que enlazar la aplicación.


Al abrir el archivo AndroidManifest.xml desde eclipse, nos aparecerá una ventana parecida a la siguiente:


El editor de recursos de Eclipse, organiza la información del manifiesto en cinco pestañas (8), estas son: Manifest, Application, Permissions, Instrumentation, AndroidManifest.xml.

Pestaña Manifest
Contiene configuraciones para todo el paquete. Aqui vienen entre otros la versión mínima del SDK necesaria por la aplicación y si necesitamos algún tipo de hardware en particular.
Vamos a describir brevemente para que sirve cada campo:

1.- Package: Este es el nombre del paquete, se lo facilitamos antes al crear el proyecto con el asistente.

2.- Version code: Número de versión interna. Esta le sirve a la aplicación para saber si se tiene que actualizar. Es un valor entero (int) que utiliza el android market y la plataforma android para manejar las actualizaciones de las aplicaciones. Normalmente comienza en 1, y debe ser incrementado con cada nueva versión que sale con destino a los usuarios. Este campo no es visible por los usuarios y no tiene porque estar sincronizado con el campo Version Name.

3.- Version name: Número de versión visible por el usuario, y se corresponde con la forma tradicional de información de versiones. Sirve para seguir el rastro de las compilaciones de la aplicación. Es un campo de tipo string, por lo que el formato es libre para el desarrollador. (Puedes poner la versión en números romanos, si quieres, o llamarle A,B,C, etc.)

4.- Shared user ID: Indica el ID de usuario que será compartido entre varios packages.

5.- Shared user label: Indica la etiqueta para el identificador de usuario compartido de este package. Es una referencia.

6.- Manifest Extras: Aquí vienen varios extras para el manifiesto, como pueden ser: La versión de SDK utilizada, las pantallas soportadas, la configuración de hardware específica utilizada por la aplicación, la versión de OpenGl Es que utiliza la aplicación, ...etc.
7.- Varios Iconos: Una serie de letras o iconos que lo que hacen es filtrar el tipo de información que nos muestra en los Extras. Estos extras, aparecerán en el recuadro en blanco que hay a la derecha de los extras, dónde nos mostrará las diversas configuraciones disponibles según la elección realizada.

Pestaña Application
Esta pestaña contiene configuraciones comunes para toda la aplicación. Aquí va el icono utilizado, así como información sobre activitys, filtros de intents, configuración de depuración, etc.
Al pulsar esta pestaña nos aparece una ventana como la siguiente:


Vamos a describir los campos que aparecen aqui:

1.- Name: Nombre completo de la subclase Application implementada por la aplicación. Cuando el proceso de la aplicación comienza, esta clase es instanciada antes que cualquiera de los componentes de la aplicación. La subclase es opcional, y la mayoría de las aplicaciones no lo necesitan. En ausencia de la subclase, Android utiliza una instancia de la clase base Application.

2.- Theme: Una referencia a un recurso de estilo (style) definiendo el tema por defecto para todas las actividades de la aplicación. Las actividades pueden cambiar este valor por defecto a través de su atributo theme.

3.- Label: Una etiqueta que que puede leer el usuario para toda aplicación, y una etiqueta por defecto para cada uno de los componentes de la aplicación. Debe ser una referencia a un recurso de tipo string, para que pueda ser localizado como otras cadenas en la interfaz de usuario. Sin embargo, por conveniencia mientras se está desarrollando la aplicación, también puede ser indicado como una cadena raw.

4.- Icon: Icono para toda la aplicación, y además es el icono por defecto para cada uno de los componentes de la aplicación. Tiene que ser una referencia a un recurso drawable que contiene la imagen, por ejemplo @drawable/icon. No hay icono por defecto.

5.- Description: Texto que puede leer el usuario sobre la aplicación. Este puede ser más largo y más descriptivo que el campo Label. El valor debe ser una referencia a un recurso de tipo string. Al contrario que Label, no puede ser una cadena "raw". No hay valor por defecto.

6.- Permission: El nombre del permiso que los clientes deben tener para poder interactuar con la aplicación. Este atributo es la forma conveniente para poner un permiso que se aplique a todos los componentes de la aplicación. Puede ser sobreescrito configurando los atributos de permisos (permission) de los componentes individuales.

7.- Process: El nombre de un proceso en el que correran todos los componentes de la aplicación. Cada componente puede sobreescribir este valor configurando su propio atributo process.

8.- Task affinity: Un nombre de afinidad que se aplica a todas las actividades dentro de la aplicación, excepto a aquellas que tengan su atributo taskAffinity cambiado. Por defecto todas las actividades dentro de una aplicación comparten la misma afinidad. El nombre de esa afinidad es el mismo que el del nombre del paquete que está puesto en el elemento <manifest>.

9.- Allow task reparenting: Indica si las activitys que define la aplicación pueden moverse de la tarea que las inició a la tarea con la que tienen afinidad cuando esa tarea es llevada al frente. True si se puede mover y false si la tarea debe permanecer donde empezó. El valor por defecto es false.

10.- Has code: Indica si la aplicación tiene código, true indica que si y false que no. Cuando el valor es false, el sistema no intenta cargar ningún código de la aplicación cuando lanza los componentes. El valor por defecto es true. La aplicación puede no tener código propio sólo si está utilizando componentes de clases que están incorporadas (built-in) como por ejempolo una actividad que utiliza la clase "AliasActivity", algo raro.

11.- Persistent: Indica si la aplicación permanecerá corriendo siempre. El valor por defecto es false. Normalmente las aplicaciones no deberían de poner esta bandera, el modo de persistencia esta ideado sólo para ciertas aplicaciones del sistema.

12.- Enabled: Indica si el sistema android puede instanciar componentes de la aplicación. True si puede, de lo contrario false. Si el valor es true, cada atributo enabled de los componentes indica si ese componente está permitido o no. Si el valor es false, entonces reemplaza (override) los valores específicos de los componentes, todos los componentes están deshabilitados. El valor por defecto es true.

13.- Debuggable: Indica si la aplicación puede o no ser depurada, true si puede y false en caso contrario. Por defecto es false.

14.- Manage space activity: El nombre completo de una subclase que el sistema pueda lanzar para permitir al usuario manejar la memori ocupada por la aplicación en el dispositivo. La actividad también debe ser declarada con un elemento <activity>.

15.- Allow clear user data: Si se permite borrar los datos del usuario, o no.

16.- Test only:

17.- Backup Agent: El nombre de la clase que implementa el agente de backup de la aplicación, una subclase de BackupAgent. El valor del atributo debe ser un nombre de clase calificado, aunque como atajo, si el primer carácter es un punto (por ejemplo: .MiAgenteBackup), entonces es añadido al nombre paquete definido en el elemento <manifest>. No hay valor por defecto, tiene que ser especificado. P. Ej: com.blogspot.pafh99.cursoandroid.holaandroid.MiAgenteBackup.

18.- Allow backup: Indica si se permite el backup de la aplicación.

19.- Varios Iconos: Una serie de letras o iconos que lo que hacen es filtrar el tipo de información que nos muestra en los "Application Nodes".

20.- Application nodes: Aqui están las activitys de la aplicación, y si están asociadas con algún intent.

21.- Espacio en blanco dónde aparecerán las opciones relacionadas con la selección realizada en Application nodes (20)

Otros:
Estas configuraciones, pueden aparecer o no en el IDE de Eclipse dependiendo del tipo de versión de SDK que hayamos escogido, si no aparecen en las pantallas gráficas, entonces pueden ser añadidos a mano en la pestaña de la vista XML.  Cuando se hable de esta pestaña se verán algunos ejemplos de como se deben añadir.
.- hardwareAccelerated: Indica si se utilizara la aceleración por hardware para las activitys y views de la aplicación. Nuevo en android 3.0.

.- killAfterRestore: Indica si la aplicación debe ser terminada después de que su configuración sea restaurada duante una operación de restauración completa del sistema. Por defecto es true.

.- logo: Un logotipo para la aplicación entera, y el logotipo por defecto para las actividades. Este atributo debe ser una referencia a un recurso drawable que contiene la imagen, por ejemplo @drawable/logo. No hay logotipo por defecto.

En el siguiente capítulo continuaremos con las pestañas que nos faltan: Permissions, instrumentation, y la vista en xml del manifiesto.

Ver. 1.1 - Revisado el 1.1.2012

No hay comentarios:

Publicar un comentario