Download Android

Document related concepts

Android wikipedia , lookup

Sistema operativo móvil wikipedia , lookup

Desarrollo de programas para Android wikipedia , lookup

LiMo Foundation wikipedia , lookup

Open Handset Alliance wikipedia , lookup

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