Download Android
Document related concepts
Transcript
UNIVERSIDAD DE LAS PALMAS DE GRAN CANARIA ESCUELA TÉCNICA SUPERIOR DE INGEIEROS DE TELECOMUNICACIÓN Microprocesadores para comunicaciones MIGUEL GIL ÁLVAREZ Las Palmas de Gran Canaria, 2007 Miguel Gil Álvarez Android Índice 1. Introducción ......................................................................................................... 3 1.1 Situación actual ............................................................................................ 4 1.2 Open Handset Alliance ................................................................................. 6 2. Android .................................................................................................................. 7 2.1 Estructura de la arquitectura ...................................................................... 8 2.1.1 Linux Kernel ......................................................................................... 8 2.1.2 Libraries/ Android runtime ................................................................ 10 2.1.3 Aplication Framework ........................................................................ 11 2.1.4 Aplications .......................................................................................... 13 3. Desarrollo de una aplicación Android .............................................................. 13 3.1 Instalación de las herramientas necesarias .............................................. 13 3.2 Creación y ejecución de un programa básico .......................................... 14 4. Conclusiones ........................................................................................................ 15 5. Bibliografía y referencias ................................................................................... 16 2 Miguel Gil Álvarez Android 1. Introducción El 5 de noviembre del año 2007 se confirma el rumor de la posible entrada del gigante Google en el mercado de la telefonía móvil, y lo hace de la mano de una alianza con más de 30 importantes empresas relacionadas con el mundo de la electrónica y de la telefonía móvil, entre ellas la española Telefónica. Solo una semana después de este anuncio aparecen los primeros SDKs (Software Development Kits) para que cualquier persona que lo desee pueda realizar sus programas. Google tiene una estrategia muy bien definida: quiere dominar el mercado del software, no del hardware. A sus múltiples aplicaciones gratuitas orientadas a Internet se van sumando otras nuevas destinadas a hacer la competencia a los tradicionales desarrolladores de aplicaciones informáticas y ahora entra con la misma formula al mercado de los teléfonos y smartphones. Así, ahora que decide dirigir sus esfuerzos en el mundo de las telecomunicaciones móviles, en vez de realizar una inversión multimillonaria en fábricas o encargar la fabricación de un móvil a una compañía del sector, opta por crear algo más cercano a su manera de actuar: un sistema operativo, y un sistema operativo no es nada comercialmente si no tiene aplicaciones incluidas. Y que mejor manera de realizar aplicaciones que disponer de un kit de desarrollo y de un concurso público para incentivar a los desarrolladores a migrarse a su plataforma [1], una idea genial. Los resultados se verán en los próximos meses, pero prometen ser bastantes espectaculares, algo a lo que google ya nos tiene acostumbrados. En este documento vamos a resumir las ideas y características básicas de la plataforma para móviles Android, además de explicar los pasos básicos para comenzar a desarrollar aplicaciones para la misma. 3 Miguel Gil Álvarez Android 1.1 Situación actual Android nace como alternativa a los gigantes actuales del mercado, que son los siguientes: Microsoft: Windows CE / Mobile / Pocket PC Microsoft se ha hecho de una gran cuota del mercado desde que arribó al segmento a fines de los 90. Aquí es necesario hacer una aclaración. En realidad, Pocket PC es un estándar, un conjunto de normas que Microsoft dicta para que los fabricantes puedan utilizar el nombre en sus productos. Precisamente, para ser considerados estos deben contar con: Una versión del sistema Windows CE (actualmente Windows Mobile). Aplicaciones de fábrica dentro de un chip no modificable (ROM). Una pantalla táctil. Un pad direccional o touchpad. Botones destinados a ejecutar las aplicaciones incorporadas. Estar basado en los procesadores ARM4 ó Intel XScale. Conocido en un principio como Windows CE (Microsoft nunca lo explicó, pero se asume que es el acrónimo de 'Consumer Electronics' o 'Compact Edition'), el sistema operativo acabó llamándose Windows Mobile y, aunque tiene una interfaz muy similar a su hermana mayor de escritorio, sus aplicaciones no son compatibles, ya que esta versión fue creada específicamente para máquinas con pocos recursos, gracias a un núcleo capaz de funcionar en menos de 1 MB de memoria. Durante su desarrollo, Windows CE y Windows Mobile han sido implementados en dispositivos Handheld PC (HPC), Pocket PC (PPC), así como en 'teléfonos inteligentes' o Smartphones, unos de los más recientes en sistemas de la compañía china HTC (se pueden encontrar unidades de Smartphones por menos de 300 euros con Windows mobile en el Media Markt). 4 Miguel Gil Álvarez Android Palm: Palm OS En 1996, Jeff Hawkins desarrolló la primera versión del sistema operativo Palm para un nuevo producto de la empresa U.S. Robotics, llamado Pilot PDA. Tras ser adquirida por 3Com al año siguiente, la compañía cambió el nombre de su línea por PalmPilot debido a una demanda presentada por la casa de lápices Pilot. Finalmente, los dispositivos terminarían siendo bautizados como Palm, al igual que su fabricante. A partir de entonces, Palm cosechó un éxito tremendo en el mercado de los organizadores digitales. La versión 2.0 del sistema acompañó el lanzamiento de los dispositivos PalmPilot Personal y Professional, mientras que la serie Palm III vio la luz junto a la versión 3.0, cuyas sucesivas actualizaciones proporcionarían compatibilidad con puertos de expansión y nuevos procesadores, así como -por primera vez- la posibilidad de tener una pantalla a color. Para la versión 4.0, Palm disponía su línea m500, dando acceso a tarjetas de memoria, telefonía, funciones de seguridad y mejoras en su interfaz. Por último, la versión 5.0 acompañaría a la línea Tungsten T, al tiempo que la empresa se dividía en PalmOne (equipos) y PalmSource (software) para canalizar mejor sus ventas. Para agosto de 2003, el sistema contaba con más de 19 mil aplicaciones disponibles, tanto comerciales como gratuitas. El lanzamiento de la versión 6.0 del sistema, apodado Cobalt, fue secundado por un patrón de desarrollo que auguraba la venida de una versión 6.1 en 2004, llena de nuevas características, por lo que los potenciales licenciatarios decidieron esperar. Y como quien tropieza dos veces, la salida de esa versión también fue acompañada de un patrón que describía la próxima versión 7.0, basada en Linux. Nuevamente los fabricantes decidieron dar un paso al costado. Como resultado, hasta la fecha no existe un solo dispositivo que utilice Cobalt. El golpe se hizo sentir: en 2004 el uso de Windows Mobile superó por primera vez el de Palm OS. Es más, la consultora IDC pronostica que este año finalizará con un mercado ocupado en un 49% por Microsoft, contra un 44% de Palm. La diferencia se ampliaría para el 2009 a 56% y 38%, respectivamente. 5 Miguel Gil Álvarez Android Nokia: Symbian Aunque su nombre ha cobrado verdadera fuerza sólo en los últimos años, este sistema operativo empezó a desarrollarse en 1989, cuando la empresa británica Psion comienza a desarrollar EPOC, uno de los primeros sistemas operativos para PDA. Altamente flexible, Symbian es un sistema disponible en varias versiones: UIQ, Nokia Series 60, 80 y 40, cuyas características dependen directamente del dispositivo sobre el cual va a funcionar (si es un teléfono móvil o PDA, si tendrá lápiz o teclado, etcétera). Pero, sin lugar a dudas, son sus ventajas en cuanto a ahorro de memoria y energía las que han convertido a este software en una opción tan particular. Varias funciones especiales le permiten mantener los recursos desocupados al máximo, mientras que el apagar la CPU cuando las aplicaciones no están realizando un proceso le permite conservar las baterías durante semanas, mientras que en circunstancias normales durarían apenas unas horas. Su espectro de programación también es amplio. Hasta la última versión lanzada -Symbian 9- el sistema es capaz de ejecutar aplicaciones construidas en C++, OPL, Python, VisualBasic, Simkin, Perl y las versiones de Java, J2ME y Personal Java. 1.2 Open Handset Alliance Bajo el nombre de Open Handset Alliance [2], Google ha reunido a más de 30 empresas del sector, entre las que se encuentran fabricantes de terminales móviles, de componentes, de software, y también a operadores de todo el mundo, entre los que se encuentra Telefónica Móviles como representante español. Como era de esperar los fabricantes Apple, Microsoft, Nokia y Palm no forman parte de esta alianza, aunque no se descarta que puedan entrar en un futuro. ¿Qué quiere decir esto? Pues que Google no pretende hacer un Gphone, sino dejar que las empresas fabricantes pertenecientes a la alianza, entre las que encontramos a HTC, LG, Nvidia, Texas instruments ó Samsung, fabriquen los terminales que incorporaren este nuevo sistema operativo. 6 Miguel Gil Álvarez Android 2. Android Android es un sistema operativo basado en Linux y que esta abierto a aplicaciones de terceras empresas, estén o no dentro de la Open Handset Alliance. Dentro de la plataforma, ya aparecen todas las aplicaciones básicas de Google: Google Maps, Google Docs, Gmail, etc. Un tema diferente es el acceso a los diferentes componentes de los móviles que monten Android, ya que Google deja libertad a los fabricantes a la hora de dejar libre acceso a las empresas que quieran desarrollar aplicaciones para sus teléfonos. Por suerte para los usuarios, Google no está por la labor de dejar que los operadores saquen al mercado móviles basados en Android que puedan ser bloqueados a menos que se tenga un contrato con el operador en cuestión (como en el caso del iPhone de apple). Y es que Android nace con una filosofía basada en el código abierto, ya que no sólo utiliza Linux como base, sino que muchas de sus aplicaciones base, como el navegador de Internet, están basadas en Open Source, con el anuncio de Google de un concurso público de aplicaciones, se espera que el sistema operativo se alimente de las contribuciones de programadores de todo el mundo. En lo que Google no parece querer transigir es en el desarrollo de las aplicaciones para su sistema operativo, forzando una homogeneización de sus máquinas virtuales Java que haga que cualquier aplicación desarrollada para Android sea ejecutable en cualquier terminal que incorpore el sistema operativo de Google. Y lo que también queda claro es que se trata de un sistema operativo pensado para optimizar al máximo los recursos disponibles en un móvil, pudiendo ejecutarse en terminales no demasiado potentes, lo cual a su vez haría que el precio de los terminales Android pudiera ser inferior al de los smartphones actuales. Por lo que se ha podido ver en una versión preliminar del software de desarrollo de aplicaciones para Android, el sistema operativo va orientado especialmente para los Smartphones, con un peso claro del acceso a Internet en su uso cotidiano. No en vano todas las aplicaciones de Google son únicamente accesibles online. 7 Miguel Gil Álvarez Android 2.1 Estructura de la arquitectura La estructura de android esta formada por 4 niveles básicos (figura 2.1) los cuales se describen a continuación: Figura 2.1 Esquema básico de la arquitectura android. 2.1.1 Linux Kernel Es la capa inferior de la plataforma y esta compuesta por un núcleo Linux (versión 2.6) que se usa como capa de abstracción de hardware (HAL, Hardware Abstraction Layer) y se encarga de gestionar los servicios básicos del sistema, tales como la gestión de memoria, la gestión de procesos, Entrada/Salida, red, etc. Cuando se emplea una HAL, las aplicaciones no acceden directamente al hardware sino que lo hacen a la capa abstracta provista por la HAL, la cual accede al hardware a través de drivers. Del mismo modo que las APIs, las HAL permiten que las aplicaciones sean independientes del hardware porque abstraen información acerca de tales sistemas, como lo son las cachés, los buses de E/S y las interrupciones. 8 Miguel Gil Álvarez Android Otra factor a destacar es la sencillez para implementar el sistema para los fabricantes, los cuales solo tienen que proveer a sus sistemas del kernel Linux adecuado, y siguiendo el modelado de drivers de Linux, comunicarlo con los distintos periféricos del dispositivo. Una vez logrado esto, simplemente se instalan el resto de capas de android. Esto implica que si somos capaces de instalar un núcleo Linux en nuestro teléfono móvil, con acceso a todas las interfaces del móvil mediante sus correspondientes drivers (cámara, antena, etc.) podremos transformar nuestro teléfono en un googlephone. De todas formas todavía es pronto para conocer el verdadero potencial de android ya que no esta disponible el kernel con el que trabaja android, ni siquiera de la programación de las librerías básicas (capas 1 y 2) ya que solo se dispone de información acerca de las APIs implementadas (capa 3) y que se ejecutan con el simulador, pero todavía no sobre un dispositivo físico real. Figura 2.1 Comunicaciones del Linux Kernel. 9 Miguel Gil Álvarez Android 2.1.2 Libraries/ Android runtime Libraries Android incluye un conjunto de librerías utilizadas por diversos componentes del sistema. Escritas en C/C++ son las encargadas de comunicar la HAL de Linux con las APIs y las aplicaciones. Las principales librerías y sus características se enumeran a continuación: Libc. Librerías básicas de C. Surface Manager. Es el encargado de la gestión de las ventanas gráficas que se muestran por pantalla y que forman parte de las diversas aplicaciones y procesos que se ejecuten en el sistema. OpenGL/ES, SGL. Librerías gráficas del sistema. Las librerías openGL son las encargadas del soporte en 3D si el dispositivo soporta aceleración gráfica. SSL. Capa de seguridad de Android. Media Framework. Son las bibliotecas para que el dispositivo soporte multimedia, basadas en las librerías de PacketVideo. Soporte de reproducción y grabación de múltiples formatos audio y video, así como archivos de imagen, (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG…). LibWebCore. Moderno motor de navegación Web. FreeType. Soporte para manejar fuentes de mapas de bits y vectoriales. SQLite. Potente y ligero motor de base de datos relacional a disposición de todas las aplicaciones. 10 Miguel Gil Álvarez Android Android runtime El componente principal de esta parte es la máquina virtual Dalvik, que ha sido diseñada específicamente para esta plataforma por Dan Bornstein con contribuciones de otros ingenieros de Google. Está optimizada para requerir poca memoria y está diseñada para permitir ejecutar varias instancias de la máquina virtual simultáneamente, delegando al sistema operativo subyacente el soporte de isolación, gestión de memoria e hilos. A menudo Dalvik es nombrada como una máquina virtual Java, pero esto no es estrictamente correcta ya que el bytecode con el que opera no es Java bytecode. Sin embargo, la herramienta dx incluida en el SDK permite transformar los archivos Class de Java compilados por un compilador Java al formato de archivos Dex (formato de bytecode de esta maquina virtual). El nombre de Dalvik fue elegido por Bornstein en honor a Dalvík, un pueblo de Islandia donde vivieron antepasados suyos. En esta capa también aparece una parte denominada Core Libraries que contiene las clases más básicas para manejar el sistema, por ejemplo el manejo de la I/O. 2.1.3 Aplication Framework Son las APIs para obtener las funciones básicas del móvil y con las cuales programar las aplicaciones. Los desarrolladores tienen acceso completo a los mismos APIs del framework usados por las aplicaciones base. La arquitectura está diseñada para simplificar la reutilización de componentes; cualquier aplicación puede publicar sus capacidades y cualquier otra aplicación puede luego hacer uso de esas capacidades (sujeto a reglas de seguridad del framework). Éste mismo mecanismo permite que los componentes sean reemplazados por el usuario. Los desarrolladores tienen acceso completo a las APIs usadas para desarrollar todo el sistema (android). Además también tenemos a nuestra disposición las librerías de las aplicaciones de google (com.google…). 11 Miguel Gil Álvarez Android La lista de servicios aportados por las APIs incluye: • Un amplio conjunto de opciones que se pueden utilizar para construir formularios: listas, cuadros de texto, botones, y hasta un navegador Web empotrable. • Proveedores de contenido que permiten a las aplicaciones acceder a los datos de otras aplicaciones (como los contactos), o para compartir sus propios datos. • Notification Manager, que permite a todas las aplicaciones personalizadas y mostrar las alertas en la barra de estado • Activity Manager, que gestiona el ciclo de vida de las aplicaciones y proporciona una navegación hacia atrás. Figura 2.1 Detalle de algunas de las APIs del android. 12 Miguel Gil Álvarez Android 2.1.4 Aplications Como no podía ser de otra manera, la última capa es la capa de aplicación donde se ejecutan las aplicaciones que hemos programado usando la API de la capa anterior. En esta capa encontramos las aplicaciones básicas para que el móvil funcione (control y gestión de llamadas, guía, navegador, etc.), además de todas las aplicaciones que instalemos en el Terminal. 3. Desarrollo de una aplicación Android En este apartado vamos a explicar los pasos básicos para desarrollar una pequeña aplicación en Android, que ejecutaremos posteriormente en el simulador para comprobar su correcto funcionamiento. 3.1 Instalación de las herramientas necesarias En [3], se obtiene el SDK necesario para empezar a programar en Android. El proceso de instalación del mismo consiste simplemente en descomprimir el contenido en un directorio y colocar ese directorio en el path del sistema operativo (existen versiones del SDK para Windows, Linux y Mac OS). Entre estos archivos encontramos todo lo necesario para la realización de programas (compilador, emulador, etc.). Programar directamente escribiendo código suele ser bastante engorroso, es por ello que android permite usar entornos de desarrollo. Existe un plugin para el entorno Eclipse que nos permite programar aplicaciones de una manera más eficiente y con las ventajas habituales cuando se usan este tipo de entornos (depurador, ejecución paso a paso, indentador, etc.) El proceso detallado de instalación tanto del SDK, como del plugin para eclipse se encuentra en [4]. 13 Miguel Gil Álvarez Android 3.2 Creación y ejecución de un programa básico Una vez que hemos instalado correctamente tanto el Eclipse con el plugin, como el SDK, podemos empezar el proceso de desarrollo de un programa en android. El primer paso es crear un nuevo proyecto android. Al hacer esto, el eclipse nos genera automáticamente toda la estructura básica del programa, además de información adicional del proyecto compatible solo con el entorno eclipse (datos de depuración, logs, etc.). Una vez creado el proyecto, simplemente ejecutamos el mismo y observamos lo que ocurre. Si el código es correcto, se lanzará el emulador del android y veremos como se ejecuta la aplicación creada. Modificando uno de los archivos XML de la estructura básica creada nos permite mostrar el texto que queramos por pantalla, como se observa en la figura 3.1. Figura 3.1 Ejecución de un programa básico en android. 14 Miguel Gil Álvarez Android 4. Conclusiones Como hemos visto, esta plataforma tiene todos los ingredientes para convertirse en un sistema muy popular en el futuro si se cumple todo lo que se promete. La posibilidad de poder trasformas cualquier teléfono que soporte Linux en esta plataforma puede dar una ventaja competitiva definitiva a google, aunque probablemente la dificultad que entrañe instalar esta herramienta, sea uno de sus mayores defectos, ya que hay que recordar que el sistema no nace como teléfono, sino como sistema operativo y la adopción del mismo por los fabricantes será fundamental para que los usuarios puedan popularizar esta plataforma. Además, el número de aplicaciones disponibles va a ser muy grande y en su mayoría gratuitas, por lo que si prospera tiene un éxito casi asegurado. Sin embargo, tendremos que esperar a ver cómo funciona la integración del sistema operativo con un teléfono "real" para ver si su funcionamiento va a ser tan fluido como prometen, y si Android se convierte en un rival real para Symbian, Palm OS, o Windows Mobile. 15 Miguel Gil Álvarez Android 5. Bibliografía y referencias [1] Concurso android. http://code.google.com/android/adc.html [2] Página oficial de la openhandsetalliance. http://www.openhandsetalliance.com/ [3] Descarga del SDK. http://code.google.com/android/download.html [4] Instrucciones de instalación del SDK de android. http://code.google.com/android/intro/installing.html [5] Sistemas operativos para móviles. http://www.mouse.cl/2005/rep/06/02/ [6] Videos para desarrolladores de Android. http://www.youtube.com/user/androiddevelopers [7] Sistemas operativos para móviles. http://www.mouse.cl/2005/rep/06/02/ [8] Foros de desarrollo. http://www.anddev.org/ http://www.android-spa.com/ 16