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.

Introducción a Git, GitHub y EGit

Introducción a este sistema de control de versiones distribuido, a su hosting más grande en Internet y al plugin para poder usarlo en Eclipse.


¿Qué es Git?

Git es un sistema de control de versiones distribuido, gratuito y de código abierto que se ha hecho muy conocido. Fue diseñado por Linus Torvalds (creador de Linux) y se ha hecho popular sobre todo por ser el sistema utilizado para el control de versiones del kernel de Linux.
Las caracteristicas principales de Git son:
  • Muy rapido y fácil
  • Es un sistema distribuido de control de versiones, es decir que no requiere de un repositorio central (como, por ejemplo, SVN). 
  • Cada copia (clone) que hagamos en nuestra máquina (repositorio local completo) es autosuficiente (commits offline).
  • Está optimizado para el trabajo con ramas (branches)


¿Qué es GitHub?

Por otro lado tenemos GitHub.com que es el hosting más grande y más popular que hay en la red de repositorios Git con más de 3 millones y medio de repositorios. Ofrece hosting gratuito para proyectos públicos y hosting de pago para proyectos privados.
Algunos proyectos públicos interesantes que puedes encontrar en GitHub son Ruby on Rails, Node.js, jQuery, jQuery UI.

¿Qué es EGit?

EGit es una plugin para Eclipse, incorpora un repositorio Git en Eclipse y además podemos conectarlo con GitHub, lo que significa que cada desarrollador tiene una copia completa de toda la historia de cada revisión del código, haciendo  el proceso de consulta de históricos muy rápido y versátil.
Estoy preparando un tutorial para la instalación y configuración de EGit y GitHub. De momento, podéis encontrar los repositorios de los proyectos que voy haciendo click aquí, esto facilita compartir el código de los ejemplos de los tutoriales y otras aplicaciones.

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.

20 Consejos para ser mejor programador

Un resumen de 20 consejos para ser mejor programador extraido del blog kabytes.com. En el enlace podéis encontrar cada punto con una breve explicación.


1. Formación, formación y formación
2. Buscar antes de preguntar
3. Busca scripts ya desarrollados
4. Lee el código fuente libre
5. No copiar y pegar
6. Buscar el momento para programar
7. Ten tu propia Wiki
8. Comenta todo lo que sea necesario
9. Participa en foros/comunidades
10. Habla con otros programadores
11. Reserva tiempo libre para otras cosas
12. Adecua tu entorno de trabajo
13. Ten tu equipo en condiciones
14. Usa herramientas gratuitas
15. Organiza tu propia biblioteca de scripts
16. Se agradecido con los que te ayudan
17. Siempre habrá alguien mejor, se humilde
18. Busca la perfección
19. Intenta ser eficiente y luego inténtalo de nuevo
20. Programa primero lo que menos te gusta

Fuente: http://www.kabytes.com/programacion/20-tips-para-ser-un-mejor-programador/

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.