Arquitectura de la plataforma Android
El siguiente
gráfico muestra la arquitectura de Android. Como se puede ver está formada por
cuatro capas. Una de las características más importantes es que todas las capas
están basadas en software libre:
1. El núcleo Linux
El núcleo de
Android está formado por el sistema operativo Linux versión 2.6. Esta capa
proporciona servicios como la seguridad, el manejo de la memoria, el
multiproceso, la pila de protocolos y el soporte de drivers para
dispositivos.
Esta capa del
modelo actúa como capa de abstracción entre el hardware y el resto de la pila.
Por lo tanto, es la única que es dependiente del hardware.
2. Runtime
de Android
Está basado en el
concepto de máquina virtual utilizado en Java. Dado las limitaciones de los
dispositivos donde ha de correr Android (poca memoria y procesador limitado) no
fue posible utilizar una máquina virtual Java estándar. Google tomó la decisión
de crear una nueva, la máquina virtual Dalvik, que respondiera mejor a estas
limitaciones.
Algunas
características de la máquina virtual Dalvik que facilitan esta optimización de
recursos son: que ejecuta ficheros Dalvik ejecutables (.dex) –formato optimizado
para ahorrar memoria. Además, está basada en registros. Cada aplicación corre
en su propio proceso Linux con su propia instancia de la máquina virtual
Dalvik. Delega al kernel de Linux algunas funciones como threading y
el manejo de la memoria a bajo nivel.
A partir de Android
5.0 se reemplaza Dalvik por ART. Esta nueva máquina virtual consigue reducir el
tiempo de ejecución del código Java hasta en un 33%.
También se incluye
en el Runtine de Android el “core libraries” con la mayoría de
las librerías disponibles en el lenguaje Java.
3.
Librerías nativas
Incluye un conjunto
de librerías en C/C++ usadas en varios componentes de Android. Están compiladas
en código nativo del procesador. Muchas de las librerías utilizan proyectos de
código abierto. Algunas de estas librerías son:
·
System C library: una derivación de la librería BSD de
C estándar (libc), adaptada para dispositivos embebidos basados en Linux.
·
Media Framework: librería basada en PacketVideo's
OpenCORE; soporta codecs de reproducción y grabación de multitud de formatos de
audio vídeo e imágenes MPEG4, H.264, MP3, AAC, AMR, JPG y PNG.
·
Surface
Manager: maneja el acceso al subsistema de representación gráfica en 2D y
3D.
·
WebKit: soporta un moderno navegador Web
utilizado en el navegador Android y en la vista Webview. Se trata de la misma
librería que utiliza Google Chrome y Safari de Apple.
·
SGL: motor de gráficos 2D.
·
Librerías 3D: implementación basada en OpenGL ES
1.0 API. Las librerías utilizan el acelerador harware 3D si está disponible, o
el software altamente optimizado de proyección 3D.
·
FreeType: fuentes en bitmap y renderizado
vectorial.
·
SQLite: potente y ligero motor de bases de
datos relacionales disponible para todas las aplicaciones.
·
SSL: proporciona servicios de
encriptación Secure Socket Layer (capa de conexión segura).
4.
Entorno de aplicación
Proporciona una
plataforma de desarrollo libre para aplicaciones con gran riqueza e
innovaciones (sensores, localización, servicios, barra de notificaciones,
etc.).
Esta capa ha sido
diseñada para simplificar la reutilización de componentes. Las aplicaciones
pueden publicar sus capacidades y otras pueden hacer uso de ellas (sujetas a
las restricciones de seguridad). Este mismo mecanismo permite a los usuarios
reemplazar componentes.
Los servicios más
importantes que incluye son:
·
Views: extenso conjunto de vistas, (parte
visual de los componentes).
·
Resource Manager: proporciona acceso a recursos que no
son en código.
·
Activity Manager: maneja el ciclo de vida de las aplicaciones
y proporciona un sistema de navegación entre ellas.
·
Notification Manager: permite a las
aplicaciones mostrar alertas personalizadas en la barra de estado.
·
Content Providers: mecanismo sencillo para acceder a
datos de otras aplicaciones (como los contactos).
5.
Aplicaciones
Este nivel está
formado por el conjunto de aplicaciones instaladas en una máquina Android.
Todas las aplicaciones han de correr en la máquina virtual Dalvik para
garantizar la seguridad del sistema.
Normalmente las
aplicaciones Android están escritas en Java. Para desarrollar aplicaciones en
Java podemos utilizar el Android SDK. Existe otra opción consistente en
desarrollar las aplicaciones utilizando C/C++. Para esta opción podemos
utilizar el Android NDK (Native Development Kit).
No hay comentarios:
Publicar un comentario