Arquitectura Android, conocimientos básicos para hacer nuestra app

Android es un sistema operativo creado independientemente de cualquier tipo de arquitectura de hardware en dispositivos móviles. Esta característica lo hace tan atractivo para los fabricantes y desarrolladores.

Además, su portabilidad, flexibilidad y seguridad hacen que las personas interesadas en los sistemas de código abierto se sientan comprensivas.

Antes de comenzar a programar, primero debe estudiar la arquitectura de Android. Por lo tanto, en este artículo, entenderemos la composición interna de Android.

Kernel de Linux

El núcleo actúa como una capa de abstracción entre el hardware y el resto de las capas de la arquitectura. El desarrollador no accede directamente a esta capa, sino que debe utilizar las librerías disponibles en capas superiores. De esta forma se evita tener que conocer las características precisas de cada teléfono. Si es necesario hacer uso de la cámara, el sistema operativo se encarga de utilizar la que incluya el teléfono, sea cual sea. Para cada elemento de hardware del teléfono existe un controlador dentro del kernel que permite utilizarlo desde el software. El kernel también se encarga de gestionar los diferentes recursos del teléfono (energía, memoria, etc.) y del sistema operativo en sí: procesos, elementos de comunicación, etc.

Librerías

Están escritas en C o C++ y compiladas para la arquitectura hardware específica del teléfono. Estas normalmente están hechas por el fabricante, quien también se encarga de instalarlas en el dispositivo antes de ponerlo a la venta. El objetivo de las librerías es proporcionar funcionalidad a las aplicaciones para tareas que se repiten con frecuencia, evitando tener que codificarlas cada vez y garantizando que se llevan a cabo de la forma “más eficiente”.

Entre las librerías incluidas habitualmente se encuentran OpenGL (motor gráfico), Bibliotecas multimedia (formatos de audio, imagen y video), Webkit (navegador), SSL (cifrado de comunicaciones), FreeType (fuentes de texto), SQLite (base de datos), entre otras.

Máquina virtual

El componente principal del entorno de ejecución de Android es la máquina virtual Dalvik (variación de la máquina virtual de Java). Las aplicaciones se codifican en Java y son compiladas en un formato específico para que esta máquina virtual las ejecute. La ventaja de esto es que las aplicaciones se compilan una única vez y de esta forma estarán listas para distribuirse con la total garantía que podrán ejecutarse en cualquier dispositivo Android que disponga de la versión mínima del sistema operativo que requiera la aplicación. 

Framework de aplicaciones

La mayoría de los componentes de esta capa son librerías Java que acceden a los recursos de las capas anteriores a través de la máquina virtual Dalvik.

Aplicaciones

En la última capa se incluyen todas las aplicaciones del dispositivo, tanto las que tienen interfaz de usuario como las que no, las nativas (programadas en C o C++) y las administradas (programadas en Java), las que vienen preinstaladas en el dispositivo y aquellas que el usuario ha instalado.

Para considerar esta arquitectura, el punto más importante es que todas las aplicaciones independientemente de si son nativas de Android, las aplicaciones proporcionadas por Google, las aplicaciones proporcionadas por los fabricantes de teléfonos móviles como estándar o las aplicaciones instaladas por los usuarios más adelante. Use el mismo marco de aplicación para acceder a los servicios proporcionados por el sistema operativo.

Esto significa dos cosas: podemos crear una aplicación que use los mismos recursos que la aplicación nativa, sin contenido reservado o inaccesible, y podemos reemplazar cualquier aplicación en el teléfono con una de nuestra elección. Este es el potencial real de Android, lo que lo hace destacar de la competencia, este último es el control completo del usuario del software que se ejecuta en el teléfono.

Autor: Juan Felipe Ramírez Sánchez

Editor: Luz Adriana Muñoz

Editor: Hisle Ángela Gutiérrez García

Código: UCP2-4

Fuentes: