miércoles, 14 de marzo de 2012

Estructura de un proyecto Android

Ahora que ya sabemos como crear nuestras aplicaciones, lo que sigue explicar  la estructura de un proyecto Android, esto fue algo en lo que también estuve batallando, ¿el porque de tantas carpetas? X_X

Cuando se crea un proyecto automaticamente se nos crean un monton de carpetas, todas ellas necesarias pero desconocidas, esta estructura es similar para cualquier tipo de aplicacion, sin importar el tamaño o complejidad.

















Expliquemos las partes importantes

/src/









Contiene todo el código fuente de la aplicación, código de la interfaz gráfica, clases auxiliares, etc. Inicialmente, Eclipse creará por nosotros el código básico de la pantalla (Activity) principal de la aplicación, siempre bajo la estructura del paquete java definido.

/gen/

 
Aquí aparecerán archivos que genera Eclipse de forma automática, como por ejemplo el archivo R.java. Estos archivos no deberemos editarlos, ya que será Eclipse el que se encargará de modificarlos automáticamente según otros parámetros del proyecto.


/Android 2.3.3/ y /assets



Android -> Es la librería de desarrollo de Android (SDK). Podemos ir desplegando el árbol para ver los paquetes y clases que incluye el SDK. Cuando añadamos nuevas librerías o paquetes a nuestro proyecto, aparecerán de la misma forma.

assets -> Es un directorio para guardar recursos que utilice tu aplicación. Para acceder a los recursos de este directorio necesitarás usar la clase AssetManager para leer los datos como un stream de bytes, por lo que es preferible utilizar el directorio /res ya que el acceso a los archivos es mucho más sencillo.

/res/ 











Es el directorio principal de recursos (resources). Aquí guardaremos imágenes o archivos multimedia que utilice nuestra aplicación. Los recursos colocados en este directorio son fácilmente accesibles desde la clase R.



/res/drawable-?dpi/












Es el directorio de recursos gráficos o imágenes que utilizará nuestra aplicación. Tiene tres subdirectorios: drawable-hdpi,drawable-ldpi y drawable-mdpi, en el que guardaremos las imágenes dependiendo de la densidad de puntos por pulgada que tenga el dispositivo en el que se ejecute la aplicación. Puedes consultar la sección Supporting Multiple Screens de la guía de desarrollo para Android para comprender mejor cómo programar para distintos tamaños de pantalla.

/res/layout/


En Android debemos separar el código de la aplicación de la interfaz gráfica. En este directorio es donde colocaremos los archivos xml que definen las vistas que utilizará la aplicación. Desde el código de la aplicación le indicaremos el archivo xml que queremos que use en cada momento, de forma que nos facilitará mucho modificar el código sin tener que tocar nada del entorno gráfico, y viceversa.

/res/values/


Al igual que separamos el código de la aplicación de la interfaz gráfica mediante vistas, conviene hacer lo mismo con cadenas de texto, arrays, paleta de colores que usará la interfaz… Este apartado cobra importancia en la localización de nuestra aplicación. Por ejemplo, podremos definir un archivo strings.xml en /res/drawable-es/ y otro en /res/drawable/. El primero se utilizará automáticamente si el usuario tiene configurado el terminal en el idioma español, mientras que en el resto de casos se utilizará el archivo que se encuentra en /res/drawable/.

AndroidManifest.xml
 
 

Es el archivo de configuración de nuestra aplicación. En él definiremos “qué puede hacer nuestra aplicación”, es decir, informaremos al sistema de que nuestra aplicación puede abrir archivos mp3, abrir enlaces http o que es capaz de manejar las llamadas telefónicas que recibamos. En este archivo también indicaremos las actividades o servicios que ejecutará nuestra aplicación y los permisos especiales que necesita utilizar en el caso de que quiera acceder a recursos compartidos del sistema, como el acceso a la lista de contactos, uso del GPS, o la posibilidad de enviar mensajes SMS.





project.properties y proguard.cfg  

Son archivos que genera automáticamente Eclipse y del que no deberemos preocuparnos por ahora.