10. Definiendo Android Android es un sistema operativo basado en Linux para dispositivos móviles, tales como teléfonos inteligentes o tablets. Fue desarrollado inicialmente por Android Inc., una firma comprada por Google en 2005. Es el principal producto de la Open Handset Alliance, un conglomerado de fabricantes y desarrolladores de hardware, software y operadores de servicio. Las unidades vendidas de teléfonos inteligentes con Android se ubican en el primer puesto en los Estados Unidos, en el segundo y tercer trimestre de 2010, con una cuota de mercado de 43,6% en el tercer trimestre. Fuente: http://es.wikipedia.org/wiki/Android
30. Android ADT(Android Development Tools), plug-in para Eclipse, que permite extender las funcionalidades del mismo para desarrollar de manera eficiente en Android, disponible en: https://dl-ssl.google.com/android/eclipse /
31. Estructura de Aplicaciones Fuente: http://programming-android.labs.oreilly.com/figs/web/ch03-components.png
La arquitectura de Android está formada por una pila de capas de software que interactuan entre ellas. En términos de desarrollo, esta división en capas facilita al desarrollador la creación de aplicaciones, ya que todo está perfectamente estructurado para que se pueda acceder a las capas más bajas utilizando las librerías disponibles para ello, evitando así tener que programar a bajo nivel las funcionalidades necesarias para el desarrollo de una aplicación. La capa más baja de la arquitectura de Android es el núcleo del sistema. Android se apoya en el kernel de Linux (en su versión 2.6). En esta capa de la arquitectura Android tiene acceso a la gestión de memoria y de los procesos, la pila de red y el modelo de drivers. El sistema incluye una máquina virtual de Java (JVM), que se llama Dalvik, que ha sido creada por Google para dispositivos con poca memoria y poca capacidad de proceso. En Android, cada aplicación corre en su propio proceso y tiene su propia instancia en la máquina virtual Dalvik. Dalvik ejecuta archivos .dex en lugar de los clásicos .class de la máquina virtual de Java de escritorio. Éstos están más optimizados para los dispositivos móviles y son más compactos. En esta máquina virtual no disponemos de toda la API de JavaSE o JavaME, sino que podemos utilizar un subconjunto llamado Core Libraries. Las librerías que puede utilizar el desarrollador en las capas superiores están escritas en C/C++. Las funcionalidades que ofrecen estas librerías son accesibles desde el Framework de aplicaciones. Es decir, un API de Java, que es el lenguaje que se utiliza para programar aplicaciones para Android. El Framework de aplicaciones proporciona al desarrollador todo lo necesario para programar aplicaciones para Android. Como hemos visto antes, a través de éste podemos acceder a la librerías subyacentes que proporciona el sistema, como a las librerías para la gestión de bases de datos (SQLite), para las fuentes de texto (FreeType), para el navegador (WebKit) o el cifrado de comunicaciones (SSL), entre otras.
La máquina virtual Dalvik utiliza el kernel de Linux para realizar tareas a bajo nivel. Es posible escribir aplicaciones en C/C++ para ejecutarlas directamente en el kernel de Linux, aunque rara vez será necesario hacer esto. Aún así, si tu aplicación requiere de mucha eficiencia y velocidad es posible crear aplicaciones en C/C++ mediante el Native Development Kit (NDK) que provee Android. Ficheros ejecutables Dalvik (.dex) La máquina virtual Dalvik utiliza los ficheros ejecutables Dalvik (.dex) que están optimizados para garantizar el mínimo consumo de memoria. En el proceso de compilación la máquina virtual utiliza los ficheros .class generados y los combina en uno o más ficheros .dex. Reutiliza información duplicada en múltiples ficheros .class para así reducir a la mitad el espacio requerido de un fichero .jar tradicional. Por ejemplo, el tamaño del fichero .dex del navegador web de Android ocupa unos 200K, mientras que la versión equivalente de esta aplicación como fichero .jar ocupa unos 500K.
La máquina virtual Dalvik utiliza el kernel de Linux para realizar tareas a bajo nivel. Es posible escribir aplicaciones en C/C++ para ejecutarlas directamente en el kernel de Linux, aunque rara vez será necesario hacer esto. Aún así, si tu aplicación requiere de mucha eficiencia y velocidad es posible crear aplicaciones en C/C++ mediante el Native Development Kit (NDK) que provee Android. Ficheros ejecutables Dalvik (.dex) La máquina virtual Dalvik utiliza los ficheros ejecutables Dalvik (.dex) que están optimizados para garantizar el mínimo consumo de memoria. En el proceso de compilación la máquina virtual utiliza los ficheros .class generados y los combina en uno o más ficheros .dex. Reutiliza información duplicada en múltiples ficheros .class para así reducir a la mitad el espacio requerido de un fichero .jar tradicional. Por ejemplo, el tamaño del fichero .dex del navegador web de Android ocupa unos 200K, mientras que la versión equivalente de esta aplicación como fichero .jar ocupa unos 500K.
Una aplicación Android está conformada por componentes, los cuales están definidos en el manifiesto de la aplicación(AndroidManifest.xml), donde se indica adicionalmente, los permisos, requisitos de hardware, plataforma, entre otros. Los componentes disponibles son: Activities(Actividades) , representan la capa de presentación de la aplicación. Utilizan vistas para presentar la UI. Views(Vistas), las cuales repr esentan los componentes visuales de la aplicación Services(Servicios), componentes que se ejecutan en background, actualizan los datos de las actividades y emiten notificaciones. Proveedores de Contenido(Content Providers), se encargan de gestionar las bases de datos para las aplicaciones. Intents(Intenciones), que gestionan el paso de mensajes entre Actividades, Servicios o todo el sistema. Broadcast Receivers(Receptores de Broadcast) , permiten que las Aplicaciones escuchen las intenciones de Broadcast, que cumplan unos determinados criterios. Notifications(Notificaciones) , representan el mecanismo para que las aplicaciones puedan notificar al usuario, sin interrumpir la actividad en primer plano
Una aplicación Android está conformada por componentes, los cuales están definidos en el manifiesto de la aplicación(AndroidManifest.xml), donde se indica adicionalmente, los permisos, requisitos de hardware, plataforma, entre otros. Los componentes disponibles son: Activities(Actividades) , representan la capa de presentación de la aplicación. Utilizan vistas para presentar la UI. Views(Vistas), las cuales repr esentan los componentes visuales de la aplicación Services(Servicios), componentes que se ejecutan en background, actualizan los datos de las actividades y emiten notificaciones. Proveedores de Contenido(Content Providers), se encargan de gestionar las bases de datos para las aplicaciones. Intents(Intenciones), que gestionan el paso de mensajes entre Actividades, Servicios o todo el sistema. Broadcast Receivers(Receptores de Broadcast) , permiten que las Aplicaciones escuchen las intenciones de Broadcast, que cumplan unos determinados criterios. Notifications(Notificaciones) , representan el mecanismo para que las aplicaciones puedan notificar al usuario, sin interrumpir la actividad en primer plano Fuente: http://www.greenandroid.es/2011/03/19/componentes-aplicacion-android/
src/: contiene el código fuente de la aplicación. es/greenandroid/android/: paquete que contiene el código de la aplicación. Puede haber varios paquetes que incluyan código que responda a diversas funcionalidades. Main.java: contiene el código de la actividad principal (la actividad principal no tiene por qué llamarse así). bin/: contiene el fichero .apk y los recursos compilados. jni/: contiene código nativo desarrollado con el NDK. gen/: contiene los ficheros .java generados por el ADT. es/greenandroid/android/: paquete que contiene el código de la aplicación. Puede haber varios paquetes que incluyan código que responda a diversas funcionalidades. R.java: fichero fuente para manejar recursos desde la aplicación: no debe modificarse. Android X.Y/ ó Google APIs [Android X.Y]/: contiene el SDK completo. X.Y es el número de versión. android.jar: librerías del SDK de Android. Aparece cuando usamos Android X.Y. o Google APIs [Android X.Y]. maps.jar: librerías de mapas de Google Maps. Sólo aparece cuando usamos Google APIs [Android X.Y]. assets/: está vacío. Puedes utilizarlo para almacenar ficheros en bruto. Los ficheros guardados aquí se empaquetan en el fichero .apk. Se puede navegar por este directorio utilizando el AssetManager. res/: contiene los recursos de la aplicación. anim/: contiene ficheros XML que se compilan en animaciones. color/: contiene ficheros XML que describen colores. drawable/: contiene imágenes y ficheros XML que describen formas y objetos Drawable. Hay tres tipos: hdpi (alta definición), ldpi (baja definición), mdpi (media definición). icon.png: icono de la aplicación que se muestra en el lanzador de aplicaciones del dispositivo. layout/: contiene ficheros XML que se compilan en layouts de panatalla o en partes de pantalla. menu/: contiene ficheros XML que definen menús de aplicación. raw/: es similar al directorio assets pero a estos recursos se accede mediante la clase R. values/: contiene ficheros XML que se compilan en diversos tipos de recursos. A diferencia de los recursos del directorio res/, los recursos escritos en los ficheros XML en este directorio no son referenciados por su nombre de fichero. Contiene, entre otros ficheros, el fichero de internacionalización strings.xml. xml/: contiene ficheros XML que configuran componentes de la aplicación, como las preferencias de pantalla. libs/: contiene librerías privadas. AndroidManifest.xml: fichero que describe la aplicación: componentes, permisos, capacidades, … build.properties: contiene propiedades modificadas para el sistema de compilación. En Eclipse no se utiliza. build.xml: fichero Ant del proyecto. En Eclipse no se utiliza. default.properties: fichero generado automáticamente que define como construir la aplicación.