Android robot.svg

 

Android es un sistema operativo de código abierto para dispositivos móviles basado en el Kernel de Linux. Este sistema fue adquirido por Google desde el año 2005 y actualmente cuenta con más de mil millones de usuarios activos [1]. En el año 2008 fue lanzada su primera versión comercial y para el 2009 fue liberada su versión 1.5 conocida como Cupcake, actualmente han pasado por los lanzamientos Donut, Eclair, Froyo, Gingerbread, HoneyComb, IceCream Sandwich, Jelly Bean y Lollipop (Versión 5.0.2). Aunque Android originalmente fue desarrollado para smartphones ahora se puede encontrar para tablets, TVs, wearables y automóviles.

 

 Arquitectura


Android incorpora una arquitectura que se divide en cinco componentes, una capa de aplicaciones android, el Android Framework, la máquina virtual Dalvik,  una capa de código nativo en espacio de usuario y el kernel de Linux (Figura 1).  

 

android architecture

 

Figura 1. Arquitectura de Android [2]

Aplicaciones

 

Es la capa de mayor nivel, en esta se encuentran todas las aplicaciones que interactúan  directamente con el usuario. Existen dos tipos de aplicaciones, las del sistema (pre instaladas) y las instaladas por el usuario.

 

Android Framework

 

El Android Framework provee las herramientas (paquetes y clases) para que los desarrolladores puedan construir aplicaciones Android. Las clases permiten interactuar con servicios de alto nivel ofrecidos por el sistema, como por ejemplo: activities, services, content providers, elementos de UI y manejo de bases de datos.

 

Máquina virtual Dalvik

 

Gran parte de Android se encuentra implementado en Java y es por ello que es necesario el uso de una Java Virtual Machine (JVM). Dalvik es la máquina virtual utilizada por Android que permite ejecutar aplicaciones programadas en Java. Dalvik trabaja con archivos .dex que se encuentran ya sea dentro archivos APK o librerías Java (JAR).

 

Código nativo en espacio de usuario

 

Esta capa esta compuesta de los siguientes componentes: el primer proceso de espacio de usuario init (encargado de iniciar todos los otros procesos), librerías y daemons nativos.

 

Kernel


Android esta basado en el kernel de Linux (Figura 1), esta capa cuenta con los drivers del hardware, networking, acceso al file-system y gestión de procesos [3]

 

 


[1](2014). Google I/O 2014. Retrieved April 24, 2015, from https://www.google.com/events/io.

[2](2014). Security | Android Open Source Project. Retrieved April 27, 2015, from https://source.android.com/devices/tech/security/.

[3] Elenkov, N. (2014, October 14). Android Security Internals: An In-depth Guide to Android's Security Architecture. No Starch Press.