Arquitectura de Una App Android
Arquitectura de Una App Android
Arquitectura de Una App Android
Arquitectura de Android.
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.
Runtime de Android
Está basado en el concepto de máquina virtual utilizado en Java. Dadas 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 ART, que
respondiera mejor a estas limitaciones.
Entre las características de la máquina virtual ART que facilitan esta optimización
de recursos se encuentra la ejecución de 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. Delega al kernel de Linux algunas funciones como threading y el
manejo de la memoria a bajo nivel.
Antes de Android 5.0 se usaba la máquina virtual Dalvik en lugar de ART. Se
trató de una importante mejora. La nueva máquina virtual consiguió reducir el
tiempo de ejecución del código Java hasta en un 33 %.
También se incluye en el runtime de Android el módulo Core Libraries, con la
mayoría de las librerías disponibles en el lenguaje Java.
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.
● *Librerías 3D: implementación basada en OpenGL ES 1.0 API. Las librerías utilizan el
acelerador hardware 3D si está disponible, o el software altamente optimizado de proyección
3D.
● *SSL: proporciona servicios de encriptación Secure Socket Layer (capa de conexión segura).
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:
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 o Kotlin. Para
desarrollar este tipo de aplicaciones 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).