Introduccion a la plataforma Android Felipe A. Besoaín Pino fbesoain@gmail.com 22-05-2009 Resumen Las características y usos que nos proveen los dispositivos móviles en los últimos años, han provocado un crecimiento exponencial en el desarrollo y comercio de ellos. Android es un sistema operativo licenciado bajo una licencia FLOSS (Free/Libre Open Source Software), diseñado específicamente para dispositivos móviles, este fue creado por Google y la OHA (Open Handset Alliance) [6]; Android, permite la estandarización de los dispositivos móviles y las aplicaciones para estos [5], esta será una charla introductoria y motivacional a Android. Palabras Claves: FLOSS, Android, Dispositivos móviles, Sistemas operativos Introducción Los dispositivos móviles actualmente son considerados como unas computadoras de bolsillo, esto es, básicamente por sus alcances y arquitectura que nos proveen, algunas características importantes son; la capacidad de procesamiento, memoria física, conexión a redes, entre otras; el avance de la tecnología ha permitido integrar otros tipos de hardware por ejemplo, sensores de movimientos (acelerometros), GPS [8], diversos tipos de conectores, etc [6, 1]. El eje escencial de un dispositivo móvil es, su alta configuración, uno de los principales objetivos de los desarrolladores de estos dispositivos es proveer al usuario un alto nivel de configuración, esta propiedad esta netamente relacionada en la interacción entre el sistema operativo y el hardware que posee el dispositivo. Podemos explotar realmente todo el potencial de nuestro dispositivo, si contamos con un S.O. propietario? Se puede acceder a la altos niveles de configuración del dispositivo o siempre estaremos limitados al propietario del S.O y sus interacciones?. Es por este motivo que la OHA [6], un consorcio de 48 empresas de telefonía móvil, entre ellas, Sony Erricsson, Samsung, Sagem, Lg. han dado pie, junto con Google company, para el desarrollo de un sistema operativo FLOSS, el cual, tiene como propósito establecer un estandar entre las compañías del OHA, así también entregar a los usuarios de los dispositivos las ventajas de usar un sistema basado en una ideología y un modelo de negocios completamente distinto al que es un fuerte hoy en día [4]. Motivación El libre desarrollo de aplicaciones junto con su distribución (FLOSS) [4, 3], nos entrega una amplia gama de oportunidades, ya sea, a nivel de conocimientos, distribución, licencias, servicios y negocios; Android, se presenta como un sistema operativo libre, creado por un consorcio de 48 empresas de telefonía móvil, entre ellas, Sony Erricsson, Samsung, Sagem, Lg (OHA) y Google, lo que lo hace mas atractivo, ya que, es un sistema operativo que actualmente esta siendo utilizado por la gran mayoría de las empresas de este consorcio logrando un éxito de ventas en el mercado y un crecimiento de un 900 por ciento en el último mes, junto
con ello, a nosotros como usuarios y programadores nos entrega un sin fin de oportunidades, ya que, como el sistema es abierto, podemos crear nuestras propias aplicaciones para nuestras propias necesidades, utilizando las librerías de desarrollo que nos provee la SDK de Android y todo el background de desarrolladores que esta detrás de el [5]. Android un sistema operativo para dispositivos móviles Android es un sistema operativo licenciado bajo una licencia FLOSS, diseñado específicamente para dispositivos móviles, este fue creado por Google y la Open Handset Alliance. Es una plataforma de desarrollo libre basado en Linux [1]. Permite la estandarización de los dispositivos móviles, y aplicaciones para estos. De la misma manera el hardware que se esta usando para construirlos sigue la misma temática, con lo cuál tenemos las siguentes ventajas tales como: Localización basada en servicios, que usan GPS o triangulación de torres por celdas permitiendo al usuario personalizar la interfaz dependiendo donde se encuentre. Una completa base de datos SQL, con el poder de almacenamiento local y para posibles sincronizaciones con un computador de escritorio. Una automática administración del ciclo de vida de las aplicaciones, ya que, los programas son controlados por diversas capaz de seguridad, lo que provee al sistema una estabilidad nunca vista antes en este tipo de dispositivos. De la misma manera el control de energía esta optimizado para un bajo consumo de energía y de memoria. Una gran calidad en gráficas y sonido, esta mediado por aceleración gráfica OpenGL[7] y vectores de antialiased en 2D, los codecs de audio y vídeo presentes son los mas comunes y estándares en la industrias, incluyendo H.24 (AVC), MP3, y AAC. La portabilidad a travéz del presente y futuro hardware, esta asegurada, ya que, todos los programas son escritos en JAVA y ejecutados por la maquina virtual Dalvik de Android, por lo tanto los programas podrán ser portables a travéz de ARM, x86 y otras arquitectura. Arquitectura del sistema operativo : Ver Anexo B Es muy interesante analizar la arquitectura de Android, ya que, es esta la que interactúa y nos abstrae con el hardware del dispositivo móvil. En la primera capa, la de mas bajo nivel podemos ver el Kernel de Linux, el cúal provee una abstracción de las capas del hardware, Android funciona bajo el Kernel de Linux principalmente por los beneficios que este entrega tales como: drivers probados, estables, gestión de memoria, gestión de procesos, módulos de seguridad, funciones de sistema robustas y software muy probado durante largo tiempo. La segunda capa en verde, tiene la particularidad de que todo el código esta escrito en C y en C++, estas son, las librerías nativas las que le dan la robustez al sistema operativo [2, 1]. Surface manager, Media Flamework, Webkit (Ver Anexo A.1). Dentro de esta capa, tenemos relacionada pero no es parte de esta, la Android Run time. En Android cada aplicación ejecuta sus propios procesos, con sus propias instancias de la máquina virtual Dalvik, esta se ha escrito de modo que un dispositivo puede correr múltiples procesos de manera eficiente (estamos en un sistema altamente concurrente). La máquina virtual Dalvik se basa en registros, y corre las clases compiladas por un compilador de lenguaje JAVA [2, 5]. La tercera capa de color azul construida en JAVA posee el core de las librerías, donde están todas las clases, métodos, entradas y/o salidas, estas librerías nos entregan funciones de alto nivel para la construcción de nuestras aplicaciones. Activity manager, Content providers, Location y Notification Manager (Ver Anexo A.2)- 2
La cuarta capa llamada capa de Aplicaciones es la capa mas alta en el diagrama de la arquitectura de Android, llamada la punta del iceberg. De hecho los usuarios solo trabajan y conocen esta capa, donde interectúan con las aplicaciones. El sistema viene con estas aplicaciones por defecto: Marcador de teléfonos, Email, Contactos, Navegador Web, Android Market. Es interesante señalar que para los usuarios estas son herramientas intrínsecas del dispositivo, pero para nosotros como desarrolladores son aplicaciones transparentes a la abstracción que ellas proveen. Escencia de la exposición En la presentación se abordarán los temas expuestos en el presente paper, con mayor profundización y extención de estos, utilizando siguente enfoque; actualidad, smartphones, FLOSS, Android su arquitectura y ciclo de vida de sus procesos, para finalizar con una breve demostración de una aplicación georeferenciada con el fin de mostrar como funciona el sistema operativo y sus abstracciones de nivel in vivo, lo que será más atractivo para que el público se motive y colabore de acuerdo a sus intereses. Referencias [1] Burnette,, Ed Hello, Android: Introducing Google s Mobile Development Platform [2] Meier,, Reto Professional Android Application Development [3] Open Source Initiative http://opensource.org/ [4] free software foundation http://fsf.org/ [5] Android Operating System http://developer.android.com/ [6] Open hand set alliance http://www.openhandsetalliance.com/ [7] OpenGL, The Industry s Foundation for High Performance Graphics http://www.opengl.org/ [8] Global Positioning System http://electronics.howstuffworks.com Área en la que se centra el trabajo: Sistemas Operativos Abiertos, Aplicaciones para Celulares. Nivel: Básico-Medio Enfoque de la presentación: Introducción al sistema operativo Android y sus potencialidades. Reseña: Estudiante de Ingeniería en Bioinformática de la Universidad de Talca, expositor en el congreso de la sociedad chilena de biología molecular 2006, ponente del congreso ENFIMIN de la USACH 2007, organizador del FLISOL en su versión 2008-2009, Durante el 2008 estuvo en España Estudiando en la Universidad Politécnica de Madrid, Técnicas de computación científica, Programación concurrente,. O ptimización informática, actualmente se encuentra realizando su tesis para obtener el grado de ingeniero en Bioinformática de la Universidad de Talca. Figura 1: Felipe Besoaín 3
A. Componentes de la arquitectura de Android A.1. A.2. Surface manager: Esta encargado de dibujar y controlar las diferentes instancias de la pantalla, en el mismo bloque podemos ver OpenGl [7] y SGL que básicamente son librerías de la abstracción del hardware para poder obtener aceleración gráfica. OpenGl trabaja con 3D y SGL con 2D una de las principales características es que Android puede trabajar con ambas al mismo tiempo. Media Flamework: Provee todos los recursos necesarios para la experiencia multimedia, codecs, formatos de archivos de voz estandarizados por la OHA ( H.24 (AVC), MP3, y AAC, MPEG, AVI) Webkit: Posee el centro o core del Browser utilizado en Android, basado en el Browser Safari de Apple modificado y optimizado para dispositivos móviles. Activity manager: Controla el ciclo de vida de las aplicaciones, mantiene el Backstack (cuando las aplicaciones están corriendo diferente procesos). Content providers: estos objetos encapsulan datos, que serán necesarios, para ser compartidos entre las diferentes aplicaciones. Por ejemplo, los contactos del teléfono, de esta manera podrán acceder todas las aplicaciones a el. Location and Notification Manager: son sistemas encargados de localizar el dispositivo mediante georeferenciación y capturara eventos como la llegada de una mensaje de texto, alertas, bugs, y cualquier instancia que sea obstructiva para el usuario, respectivamente. 4
B. Arquitectura de Android y sus componentes Figura 2: Arquitectura de Android. Figura tomada de [5] En la presente figura, podemos ver la arquitectura de Android, en un modelo de 4 capas, en él podemos ver la relación desde la base del sistema hasta el mas alto nivel de abstracción [5]. Es muy importante saber como es la arquitectura de nuestro sistema operativo, ya que, es este el que asigna, distribuye y planifica todos los procesos y recursos de nuestro dispositivo móvil, tratando de optmizar al máximo sus capacidades, teniendo en cuenta que contamos con recursos muy limitados, tales como baterías, miniprocesadores, memorias de empotradas, etc. 5