¿Que es Android?
Android es un s.o. (sistema operativo) libre y de código abierto. Esto quiere decir que los usuarios pueden acceder al código para modificarlo a su antojo abriendo multitud de nuevas posibilidades. Fue diseñado para smartphones y tabletas aunque también pueda instalarse en un PC.
Constantemente va mejorando y sacando nuevas versiones del s.o., desde la 1.0 en el 2008 a la 4.2 lanzada el 13 de noviembre de 2012. Para más información de cada una aquí: versiones Android
Todas estas actualizaciones siguen un mismo esquema. ¿Conocéis cual es su estructura?
Arquitectura de Android
Una de las características principales de Android es que está creado para que cada aplicación se ejecute en un proceso independiente, con una instancia de la maquina virtual propia y con un UID (identificador de usuario) propio. Con ello se consigue concurrencia e interoperabilidad de procesos, compartiendo información entre ellos. Esto puede sonarte a chino así que mejor observa la siguiente imagen para comprender su estructura.
Cómo podéis ver, Android se divide en 4 capas o partes, el cuál está construido a partir de un kernel base (núcleo) situado en la capa más baja hacia las capas superiores interactuando entre ellas.
1. Linux Kernel
Es un núcleo, el motor, el cerebro. Se encarga del control de los drivers, periféricos, Servicios: seguridad, gestión de memoria, procesos, etc. Entre las diferentes versiones de android, el número de kernel varía. Prácticamente todos están basados en un kernel Linux 2.6.x (siendo x variable entre actualizaciones) , pero a partir de Android 4.0 se usa un kernel Linux 3.0.x.
Linux es el núcleo o Kernel del Sistema Operativo libre denominado GNU/Linux. Lanzado bajo la licencia pública general (GPL – General Public License) de GNU y desarrollado gracias a contribuciones provenientes de todo el mundo.
Es la capa encargada de interconectar el hardware del dispositivo con las aplicaciones y todo el software disponible utilizando el hardware del dispositivo.
2. Bibliotecas o Librerías
A un nivel superior al kernel de Linux contamos con un conjunto de librerías disponibles para el desarrollador de aplicaciones. Estan escritas en C/C++ y se encargan de los gráficos 2D, 3D, reproducción/grabación archivos media, mapa de bits, bases de datos.
– SGL (Skia Graphics Library): Se trata de un motor gráfico implementado en C++ y que puede lanzarse en varios entornos, entre ellos en dispositivos móviles. Está orientado al desarrollo de 2D con la utilización de líneas, rectángulos, óvalos, polígonos y trayectorias.
– SSL (Secure Socket Layer): El protocolo SSL es un sistema diseñado y propuesto por Netscape Communications Corporation. Se encuentra en la pila OSI entre los niveles de TCP/IP y de los protocolos HTTP, FTP, SMTP, etc. Proporciona sus servicios de seguridad cifrando los datos intercambiados entre el servidor y el cliente con un algoritmo de cifrado simétrico, el RC4 o IDEA, y cifrando la clave de sesión de RC4 o IDEA mediante un algoritmo de cifrado de clave pública, el RSA. Android utiliza SSLv3.0 o SSLv2.0
– Libc: Consiste en una implementación derivada de BSD de la librería estándar C del sistema (libc), adaptada para dispositivos embebidos basados en Linux. Google la llamó con el nombre de Bionic e implementa servicios como la gestión de excepciones de c++, gestión de propiedades del sistema, sistema de logs, etc.
– OpenGL|ES(OpenGL for Embedded Systems): es una variante simplificada de la API gráfica OpenGL diseñada para dispositivos integrados tales como teléfonos móviles, PDAs y consolas de videojuegos. La define y promueve el Grupo Khronos, un consorcio de empresas dedicadas a hardware y software gráfico interesadas en APIs gráficas y multimedia.
– FreeType: Librerías que se encargan de mapas de bits y vectores.
– WebKit: Es un marco de trabajo para aplicaciones que funciona como base para el navegador web Safari y Google Chrome. Está basado originalmente en el motor KHTML del navegador Web del proyecto KDE: Konqueror.
– Surface Manager: Es la librería encargada de la gestión de superficies que gestiona el acceso al subsistema de la pantalla y compone capas de gráficos 2D y 3D desde múltiples aplicaciones.
– Media Framework: Son las librerías multimedia basadas en OpenCORE PacketVideo que soportan reproducción y grabación de múltiples formatos de audio y video, así también como ficheros de imagen estáticos, incluyendo MPEG4, H.264, MP3, AAC, AMR, JPG, y PNG.
– SQLite: Es un poderoso y ligero motor de bases de datos relacionales que está disponible para almacenamiento de datos en todas las aplicaciones.
2.1 Runtime Android
En esta misma capa se encuentra el Runtime de Android sobre la maquina virtual de Dalvik (archivos .dex que se encargan de optimizar las necesidades de la memoria, batería y procesado).
Dalvik permite ejecutar múltiples MVs (máquinas virtuales). La MV Dalvik ejecuta ficheros en el formato Dalvik ejecutable (.dex) que está optimizado para el mínimo gasto de memoria. La MV está basada en registros y ejecuta clases compiladas mediante un compilador de lenguaje Java. Son transformadas en el formato .dex mediante la herramienta “dx” incluida en el SDK.Android incluye un conjunto de librerías que proporciona la mayoría de la funcionalidad, disponible en las principales librerías que están programadas en Java. Por cada aplicación utiliza un proceso, con su propia instancia de la máquina virtual Dalvik.
Uno de los motivos por el cual Android se decantó por el uso de Dalvik fue evitar depender de la máquina virtual de Java de Sun.
3. Framework de Aplicaciones
Acceso completo a APIs (Vistas (Listas, Grids, botones, etc.) Content provider (gestión acceso) y varios Managers (Resource, Notification, Activity)).
En esta capa se encuentran utilidades con que cuenta el terminal como el manejador de vistas, manejador de ventanas, notificador de eventos, localizador:
– Activity Manager: Conjunto de APIs que controlan el ciclo de vida de aplicaciones y mantiene un “Backstack” para que el usuario pueda utilizar otras aplicaciones mientras algunas siguen ejecutándose.
– Windows Manager: Gestor de ventanas
– Content Providers: Estos objetos encapsulan los datos que hay que compartidos entre las aplicaciones, como los contactos.
– View System: Sistema encargado de controlar las vistas de las aplicaciones.
– Notification Manager: Eventos llamados intents, como mensajes recibidos, citas e infinidad de eventos que se presentan de una manera discreta para el usuario.
– Package Manager: Gestor de paquetes para instalar/desinstalar aplicaciones.
– Telephony Manager: Es el gestor del teléfono (llamadas, mensajes,…).
– Resource Manager: Los recursos son algo que van con su respectivo programa, no es código.
– Location Manager: Corresponde al gestor para controlar tu localización y posicionamiento.
– XMPP Service: Ofrece servicio para poder utilizar el protocolo de intercambio de mensajes.
4. Aplicaciones
Esta capa se sitúa en el nivel más superior, aquí se encuentran todas las aplicaciones a las cuales tiene acceso el usuario desde su terminal como pueden ser los contactos, telefonía, mail, calendario, mapas, navegador, juegos, reproductor multimedia, etc.
Ahora ya conocéis un poco más como está estructurado Android, si os ha gustado compártelo, y si quieres más artículos como este o similares simplemente deja un comentario.