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.
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