Programación Android: II. Estructura y componentes

Explicación breve de cual es la estructura que nos encontramos al empezar con el desarrollo de una aplicación Android. Después de crear un nuevo proyecto en Eclipse se genera una estructura de carpetas que suele ser siempre la misma.


Estructura

src/
Contiene el código fuente organizado en paquetes. Aquí irán las clases java de nuestra aplicación.

gen/
Archivos que genera el compilador en sus pasadas, como el archivo de recursos R, esta carpeta normalmente no se debe tocar. Se genera todo automáticamente.

Android x.x
Hacen referencia a la versión del SDK de Android que se esté empleando para la aplicación.
Android dependencies
Librerias de las que depende la aplicación.
assets/
Almacena recursos que pueda necesitar nuestra aplicación, como ficheros de música, imágenes, etc. Podremos acceder a ellos con la clase del sistema AssetManager
bin/
Archivos compilados de la aplicación.
libs/
Librerías disponibles para la aplicación.
res/
Contiene todos los recursos necesarios para la aplicación. Todos los archivos de esta carpeta son indexados por el compilador y se genera el fichero de recursos R. Se divide en sub-carpetas.

  • Drawable: Ficheros bitmap(.png, .jpg, .gif) o XML con contenidos que se dibujarán (fondos, botones, etc).
  • Layout: Ficheros XML que definen la capa de interfaz de usuario.
  • Menu: Ficheros XML con la definición de los menús de la aplicación.
  • Values: Ficheros XML para la definición de estilos, cadenas de texto para localización etc.

AndroidManifest.xml
En este archivo se colocará la información esencial sobre la aplicación que será usada en el momento de la ejecución del mismo.

Componentes

Son los elementos básicos con los que se trabajan en una aplicación Android. Cada uno de ellos tiene una función diferente a través de la cual el sistema puede interactuar con la aplicación y comportarse de una manera determinada.
Actividades
Cada Actividad (clase java que extienden a Activity) representa una única pantalla de la aplicación y provee una interfaz de usuario (1 pantalla sobre la que el usuario puede interactuar). Si tienes 3 pantallas, tendrás 3 actividades distintas e independientes.
Servicios
Clase java que extiende a Service. Es un componente que se ejecuta en segundo plano con el objeto de realizar tareas de larga duración de forma que no se bloquee la interacción del usuario con la Actividad que esté ejecutando en ese momento. Estos, no proveen de una interfaz de usuario.
Proveedores de Contenido
Subclases de ContentProvider, gestionan conjuntos de datos que la aplicación comparte con otras aplicaciones. Pueden almacenarse en distintos lugares, como ejemplo, en una base de datos SQLite, o en un archivo de sistema. Estos datos podrán ser consultados por otras aplicaciones e incluso ser modificados, siempre y cuando el “Proveedor de Contenido” (Content Provider) lo permita.
Receptores Broadcast o de Eventos
Escuchan y responden ante un amplio rango de anuncios que ocurren en el sistema (“bateria baja”, “gps encendido”,etc.). No tienen asociado un interfaz de usuario pero si que pueden generar notificaciones en la barra de estado para avisar al usuario. Son “desencadenantes” de otros componentes.

Podéis encontrar está y más información en la documentación técnica de Android: http://developer.android.com/develop/index.html

Saludos,

Consultor tecnológico eCommerce, social media, SEO para pequeñas y medianas empresas, y emprendedor. Dedicado día a día al crecimiento en el área de negocios y participando en varios proyectos empresariales y de inversión.

Apps nativas vs. HTML5

“¿Hago una aplicación web o una aplicación nativa? Éste es el dilema al que se suelen enfrentar muchos desarrolladores que comienzan en el mundo de la programación o el de otros tantos que tienen que presentar su proyecto a un cliente. Y también es uno de los debates que más está calentando la Red durante los últimos tiempos, especialmente tras las inesperadas declaraciones de Mark Zuckerberg al asegurar que “el error más grande que hemos hecho como compañía ha sido apostar por el lenguaje HTML5 sobre las aplicaciones nativas, desperdiciamos dos años” y coronarlas con una promesa de apuesta férrea de Facebook por las apps específicas para iOS (ya disponible) y Android (en proceso de fabricación).”



Comparto el link de un artículo que me parece interesante comparando algunas de las posibilidades de estás dos plataformas de desarrollo de apps.

http://www.siliconnews.es/2012/10/05/enfrentados-cara-a-cara-apps-nativas-y-html5/

Añadir que estoy totalmente de acuerdo en ver las dos posibilidades como herramientas diferentes y no solo tomar una como referente. En cada proyecto se debe analizar que plataforma ofrece las mejores ventajas para conseguir nuestro objetivo.

En el articulo podemos ver el concepto de wrappers que son herramientas que convierten aplicaciones HTML5 en aplicaciones nativas con relativa facilidad. De todos modos, aunque con estas herramientas obtengamos una aplicación nativa, si lo que buscamos es el máximo rendimiento y optimización, lo ideal siempre será crearlas desde cero para una plataforma en concreto.
Phonegap (http://phonegap.com/) o Titanium (http://www.appcelerator.com/) son algunos de los wrappers que yo conozco, y parece que son los más utilizados. 
Saludos,
Consultor tecnológico eCommerce, social media, SEO para pequeñas y medianas empresas, y emprendedor. Dedicado día a día al crecimiento en el área de negocios y participando en varios proyectos empresariales y de inversión.

HTML5. Características, compatibilidad, tutoriales y ejemplos

Recopilación de algunos links de interés sobre HTML5 y CSS3 que siempre viene bien tener a mano.


Guía de características y especificaciones técnicas bastante completa.

http://developers.whatwg.org/

Página que indica la compatibilidad con los navegadores de las diferentes características de HTML5 y CSS3.

http://www.findmebyip.com/litmus/

Recopilación de demos y ejemplos.

http://html5demos.com/

Saludos,

Consultor tecnológico eCommerce, social media, SEO para pequeñas y medianas empresas, y emprendedor. Dedicado día a día al crecimiento en el área de negocios y participando en varios proyectos empresariales y de inversión.