El anuncio del sistema Android se realizó el 5 de noviembre de 2007 junto con la creación de la Open Handest Alliance, un consorcio de 78 compañías de hardware, software y telecomunicaciones dedicadas al desarrollo de estándares abiertos para dispositivos móviles. Google liberó la mayoría del código de Android bajo la licencia Apache, una licencia libre y de còdigo abierto.
La estructura
del sistema operativo Android se compone de aplicaciones que se ejecutan en un framework
Java de aplicaciones orientadas a objetos sobre el núcleo de las biblotecas de Java en una máquina virtual
Dalvik
con compilacion en tiempo de ejecuciòn.
Las bibliotecas escritas en lenguaje C incluyen un administrador de interfaz grafica(surface manager), un
framework Open Core, una base de datos
relacional SQLite,
una Interfaz de programación de API
gráfica OpenGL ES 2.0 3D, un motor de renderizado Webkit, un
motor gráfico SGL,SSL y una Biblioteca estandar de c Bionic. El
sistema operativo está compuesto por 12 millones de líneas de código,
incluyendo 3 millones de líneas de XML, 2,8 millones de líneas de lenguaje C,
2,1 millones de líneas de Java y 1,75 millones de líneas de C++.
Arquitectura
Bibliotecas: Android incluye un
conjunto de bibliotecas de C/C++ usadas por
varios componentes del sistema. Estas características se exponen a los
desarrolladores a través del marco de trabajo de aplicaciones de Android;
algunas son: System C library (implementación biblioteca C estándar),
bibliotecas de medios, bibliotecas de gráficos, 3D y SQLite, entre otras.
Runtime de Android: Android incluye un
set de bibliotecas base que proporcionan la mayor parte de las funciones
disponibles en las bibliotecas base del lenguaje Java. Cada aplicación Android
corre su propio proceso, con su propia instancia de la máquina virtual Dalvik.
Dalvik ha sido escrito de forma que un dispositivo puede correr múltiples
máquinas virtuales de forma eficiente. Dalvik ejecuta archivos en el formato
Dalvik Executable (.dex), el cual está optimizado para memoria mínima. La
Máquina Virtual está basada en registros y corre clases compiladas por el
compilador de Java que han sido transformadas al formato.dex por la herramienta
incluida "dx".
Núcleo Linux: Android depende de Linux
para los servicios base del sistema como seguridad, gestión de memoria, gestión
de procesos, pila de red y modelo de controladores. El nùcleo también actúa como una capa de
abstracción entre el hardware y el resto de la pila de software.
Características
Diseño de dispositivo
|
La plataforma es
adaptable a pantallas más grandes, VGA, biblioteca de gráficos 2D, biblioteca
de gráficos 3D basada en las especificaciones de la OpenGL ES 2.0 y diseño de
teléfonos tradicionales.
|
Almacenamiento
|
SQLite,
una base de datos liviana, que es usada para propósitos de almacenamiento de
datos.
|
Conectividad
|
Android soporta las
siguientes tecnologías de conectividad: GSM/EDGE, IDEN, CDMA,EV-DO,UMTS, Bluetooth, Wi-Fi, LTE y WiMax.
|
Mensajería
|
SMSy MMS son formas de
mensajería, incluyendo mensajería de texto y ahora la Android Cloud to Device
Messaging Framework (C2DM) es parte del servicio de Push
Messaging de Android.
|
Navegador web
|
El navegador web
incluido en Android está basado en el motor de renderizado de código abierto Webkit,
emparejado con el motor JavaScript V8 de Google Chrome. El navegador obtiene
una puntuación de 93/100 en el test Acid3.
|
Soporte de Java
|
Aunque la mayoría de
las aplicaciones están escritas en Java, no hay una màquina virtual Java en la plataforma.
El bytecode Java no es ejecutado, sino que primero se compila en un ejecutable
Dalvik y corre en la Máquina Virtual Dalvik. Dalvik es una máquina virtual
especializada, diseñada específicamente para Android y optimizada para
dipositivos móviles que funcionan con batería y que tienen memoria y
procesador limitados. El soporte para J2ME puede ser agregado mediante
aplicaciones de terceros como el J2ME MIDP Runner.
|
Soporte multimedia
|
Android soporta los
siguientes formatos multimedia: WebM, H.263, H.264 (en 3GP o MP4),MPEG-4S, AMR-WEB (en un contenedor 3GP), AAC, HE-AAC
(en contenedores MP4 o 3GP), MP3, MIDI, Ogg Vorbis,
WAV, JPEG, PNG, GIF y BMP.
|
Soporte para streaming
|
Streaming RTP/RTSP
(3GPP PSS, ISMA), descarga progresiva de HTML (HTML5 <video> tag).
Adobe Flash Streaming (RTMP) es soportado mediante el Adobe Flash Player. Se
planea el soporte de Microsoft Smooth Streaming con el port de Silverlight a
Android. Adobe Flash HTTP Dynamic Streaming estará disponible mediante una
actualización de Adobe Flash Player.
|
Soporte para hardware adicional
|
Android soporta
cámaras de fotos, de vídeo, pantallas táctiles, GPS, acelerómetros,
giroscopios, magnetómetros, sensores de proximidad y de presión, termómetro,
aceleración 2D y 3D.
|
Entorno de desarrollo
|
Incluye un emulador
de dispositivos, herramientas para depuración de memoria y análisis del
rendimiento del software. El entorno de desarrollo integrado es Eclipse (actualmente
3.4, 3.5 o 3.6) usando el plugin de Herramientas de Desarrollo de Android.
|
Google Play
|
Google Play
es un catálogo de aplicaciones gratuitas o de pago en el que pueden ser
descargadas e instaladas en dispositivos Android sin la necesidad de un PC.
|
Multi-táctil
|
Android tiene
soporte nativo para pantallas multi-táctiles que inicialmente hicieron su aparición
en dispositivos como el HTC Hero. La funcionalidad fue originalmente
desactivada a nivel de kernel (posiblemente para evitar infringir patentes de
otras compañías).
Más tarde, Google publicó una actualización para el Nexus One
y el Motorola Droid que activa el soporte para
pantallas multi-táctiles de forma nativa.
|
Bluetooth
|
El soporte para A2DF
y AVRCP fue agregado en la versión 1.5; el envío de archivos (OPP) y la exploración del
directorio telefónico fueron agregados en la versión 2.0, y el marcado por voz junto
con el envío de contactos entre teléfonos lo fueron en la versión 2.2.
|
Videollamada
|
Android soporta
videollamada a través de Google Talk desde su versión HoneyComb.
|
Multitarea
|
Multitarea real de
aplicaciones está disponible, es decir, las aplicaciones que no estén
ejecutándose en primer plano reciben ciclos de reloj, a diferencia de otros
sistemas de la competencia en la que la multitarea es congelada
|
Características basadas en voz
|
La búsqueda en
Google a través de voz está disponible como "Entrada de Búsqueda"
desde la versión inicial del sistema.
|
Tethering
|
Android soporta
tethering, que permite al teléfono ser usado como un punto de acceso
alámbrico o inalámbrico (todos los teléfonos desde la versión 2.2, no oficial
en teléfonos con versión 1.6 o superiores mediante aplicaciones disponibles
en el Android Market, por ejemplo PdaNet). Para permitir a un PC usar la
conexión 3G del móvil android se podría requerir la instalación de software
adicional
|
3