Android es un sistema operativo creado
para ser independiente de cualquier tipo de arquitectura de hardware en los dispositivos móviles.
Esta característica hace que sea tan atractivo ante los fabricantes y
desarrolladores.
Adicionalmente su portabilidad, flexibilidad yseguridad les da ese toque de simpatía a las
personas interesadas en los sistemas de código abierto.
La arquitectura de Android debe
ser estudiada antes de comenzar a programar. Por tal motivo, en este artículo
veremos cómo está constituido el interior de Android. Estudiaremos sus
características de operación en tiempo real y en queformato de archivo se encapsula una aplicación Android.
El diagrama indica que la estructura de Android se encuentra
construida sobre el Kernel de Linux. Luego hay una capa de Librerías relacionadas
con una estructura administradora en Tiempo de ejecución. En el siguiente nivel encontramos un Framework de apoyo para construcción de
aplicaciones y posteriormente vemos a la capa de Aplicaciones.
Kernel de Linux: ¿Qué es Android?, el
núcleo del sistema operativo Android está basado en el kernel de Linux versión
2.6, similar al que puede incluir cualquier distribución de Linux, como Ubuntu,
solo que adaptado a las características del hardware en el que se ejecutará
Android, es decir, para dispositivos móviles.
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
también nos evitamos el hecho de quebrarnos la cabeza para conocer las
características precisas de cada teléfono. Si necesitamos 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
(o driver) 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 (networking), etc.
Librerías: La siguiente capa
que se sitúa justo sobre el kernel la componen las bibliotecas nativas de
Android, también llamadas 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 encontramos 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.
Entorno de ejecución: Como podemos
apreciar en el diagrama, el entorno de ejecución de Android no se considera una
capa en sí mismo, dado que también está formado por librerías. Aquí encontramos
las librerías con las funcionalidades habituales de Java así como otras
específicas de Android.
El componente
principal del entorno de ejecución de Android es la máquina virtual Dalvik. 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 de que podrán ejecutarse en cualquier
dispositivo Android que disponga de la versión mínima del sistema operativo que
requiera la aplicación.
Cabe aclarar que
Dalvik es una variación de la máquina virtual de Java, por lo que no es
compatible con el bytecode Java. Java se usa únicamente como lenguaje de
programación, y los ejecutables que se generan con el SDK de Android tienen la
extensión .dex que es específico para Dalvik, y por ello no podemos correr
aplicaciones Java en Android ni viceversa.
Framework de aplicaciones: La siguiente capa
está formada por todas las clases y servicios que utilizan directamente
las aplicaciones para realizar sus funciones. 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. Siguiendo el diagrama encontramos:
- Activity Manager: Se encarga de administrar la pila de
actividades de nuestra aplicación así como su ciclo de vida.
- Windows Manager: Se encarga de organizar lo que se mostrará en
pantalla. Básicamente crea las superficies en la pantalla que
posteriormente pasarán a ser ocupadas por las actividades.
- Content Provider: Esta librería es muy interesante porque crea
una capa que encapsula los datos que se compartirán entre
aplicaciones para tener control sobre cómo se accede a la información.
- Views: En Android, las vistas los elementos que
nos ayudarán a construir las interfaces de usuario: botones, cuadros de
texto, listas y hasta elementos más avanzados como un navegador web o un
visor de Google Maps.
- Notification Manager: Engloba los servicios para notificar al
usuario cuando algo requiera su atención mostrando alertas en la barra de
estado. Un dato importante es que esta biblioteca también permite jugar
con sonidos, activar el vibrador o utilizar los LEDs del teléfono en caso
de tenerlos.
- Package Manager: Esta biblioteca permite obtener información
sobre los paquetes instalados en el dispositivo Android, además de
gestionar la instalación de nuevos paquetes. Con paquete nos referimos a
la forma en que se distribuyen las aplicaciones Android, estos contienen
el archivo .apk, que a su vez incluyen los archivos .dex con todos
los recursos y archivos adicionales que necesite la aplicación, para
facilitar su descarga e instalación.
- Telephony Manager: Con esta librería podremos realizar
llamadas o enviar y recibir SMS/MMS, aunque no permite reemplazar o
eliminar la actividad que se muestra cuando una llamada está en curso.
- Resource Manager: Con esta librería podremos gestionar todos
los elementos que forman parte de la aplicación y que están fuera del
código, es decir, cadenas de texto traducidas a diferentes idiomas,
imágenes, sonidos o layouts. En un post relacionado a la estructura de un
proyecto Android veremos esto más a fondo.
- Location Manager: Permite determinar la posición geográfica del
dispositivo Android mediante GPS o redes disponibles y trabajar con mapas.
- Sensor Manager: Nos permite manipular los elementos de
hardware del teléfono como el acelerómetro, giroscopio, sensor de
luminosidad, sensor de campo magnético, brújula, sensor de presión, sensor
de proximidad, sensor de temperatura, etc.
- Cámara: Con esta librería podemos hacer uso de
la(s) cámara(s) del dispositivo para tomar fotografías o para
grabar vídeo.
- Multimedia: Permiten reproducir y visualizar audio, vídeo
e imágenes en el dispositivo.
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.
En esta capa
encontramos también la aplicación principal del sistema: Inicio (Home) o
lanzador (launcher), porque es la que permite ejecutar otras aplicaciones
mediante una lista y mostrando diferentes escritorios donde se pueden colocar
accesos directos a aplicaciones o incluso widgets, que son también aplicaciones
de esta capa.
Android es un sistema operativo creado
para ser independiente de cualquier tipo de arquitectura de hardware en los dispositivos móviles.
Esta característica hace que sea tan atractivo ante los fabricantes y
desarrolladores.
Adicionalmente su portabilidad, flexibilidad yseguridad les da ese toque de simpatía a las
personas interesadas en los sistemas de código abierto.
La arquitectura de Android debe
ser estudiada antes de comenzar a programar. Por tal motivo, en este artículo
veremos cómo está constituido el interior de Android. Estudiaremos sus
características de operación en tiempo real y en queformato de archivo se encapsula una aplicación Android.

El diagrama indica que la estructura de Android se encuentra
construida sobre el Kernel de Linux. Luego hay una capa de Librerías relacionadas
con una estructura administradora en Tiempo de ejecución. En el siguiente nivel encontramos un Framework de apoyo para construcción de
aplicaciones y posteriormente vemos a la capa de Aplicaciones.
Kernel de Linux: ¿Qué es Android?, el
núcleo del sistema operativo Android está basado en el kernel de Linux versión
2.6, similar al que puede incluir cualquier distribución de Linux, como Ubuntu,
solo que adaptado a las características del hardware en el que se ejecutará
Android, es decir, para dispositivos móviles.
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
también nos evitamos el hecho de quebrarnos la cabeza para conocer las
características precisas de cada teléfono. Si necesitamos 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
(o driver) 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 (networking), etc.
Librerías: La siguiente capa
que se sitúa justo sobre el kernel la componen las bibliotecas nativas de
Android, también llamadas 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 encontramos 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.
Entorno de ejecución: Como podemos
apreciar en el diagrama, el entorno de ejecución de Android no se considera una
capa en sí mismo, dado que también está formado por librerías. Aquí encontramos
las librerías con las funcionalidades habituales de Java así como otras
específicas de Android.
El componente
principal del entorno de ejecución de Android es la máquina virtual Dalvik. 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 de que podrán ejecutarse en cualquier
dispositivo Android que disponga de la versión mínima del sistema operativo que
requiera la aplicación.
Cabe aclarar que
Dalvik es una variación de la máquina virtual de Java, por lo que no es
compatible con el bytecode Java. Java se usa únicamente como lenguaje de
programación, y los ejecutables que se generan con el SDK de Android tienen la
extensión .dex que es específico para Dalvik, y por ello no podemos correr
aplicaciones Java en Android ni viceversa.
Framework de aplicaciones: La siguiente capa
está formada por todas las clases y servicios que utilizan directamente
las aplicaciones para realizar sus funciones. 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. Siguiendo el diagrama encontramos:
- Activity Manager: Se encarga de administrar la pila de actividades de nuestra aplicación así como su ciclo de vida.
- Windows Manager: Se encarga de organizar lo que se mostrará en
pantalla. Básicamente crea las superficies en la pantalla que
posteriormente pasarán a ser ocupadas por las actividades.
- Content Provider: Esta librería es muy interesante porque crea
una capa que encapsula los datos que se compartirán entre
aplicaciones para tener control sobre cómo se accede a la información.
- Views: En Android, las vistas los elementos que
nos ayudarán a construir las interfaces de usuario: botones, cuadros de
texto, listas y hasta elementos más avanzados como un navegador web o un
visor de Google Maps.
- Notification Manager: Engloba los servicios para notificar al
usuario cuando algo requiera su atención mostrando alertas en la barra de
estado. Un dato importante es que esta biblioteca también permite jugar
con sonidos, activar el vibrador o utilizar los LEDs del teléfono en caso
de tenerlos.
- Package Manager: Esta biblioteca permite obtener información
sobre los paquetes instalados en el dispositivo Android, además de
gestionar la instalación de nuevos paquetes. Con paquete nos referimos a
la forma en que se distribuyen las aplicaciones Android, estos contienen
el archivo .apk, que a su vez incluyen los archivos .dex con todos
los recursos y archivos adicionales que necesite la aplicación, para
facilitar su descarga e instalación.
- Telephony Manager: Con esta librería podremos realizar
llamadas o enviar y recibir SMS/MMS, aunque no permite reemplazar o
eliminar la actividad que se muestra cuando una llamada está en curso.
- Resource Manager: Con esta librería podremos gestionar todos
los elementos que forman parte de la aplicación y que están fuera del
código, es decir, cadenas de texto traducidas a diferentes idiomas,
imágenes, sonidos o layouts. En un post relacionado a la estructura de un
proyecto Android veremos esto más a fondo.
- Location Manager: Permite determinar la posición geográfica del
dispositivo Android mediante GPS o redes disponibles y trabajar con mapas.
- Sensor Manager: Nos permite manipular los elementos de
hardware del teléfono como el acelerómetro, giroscopio, sensor de
luminosidad, sensor de campo magnético, brújula, sensor de presión, sensor
de proximidad, sensor de temperatura, etc.
- Cámara: Con esta librería podemos hacer uso de
la(s) cámara(s) del dispositivo para tomar fotografías o para
grabar vídeo.
- Multimedia: Permiten reproducir y visualizar audio, vídeo
e imágenes en el dispositivo.
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.
En esta capa
encontramos también la aplicación principal del sistema: Inicio (Home) o
lanzador (launcher), porque es la que permite ejecutar otras aplicaciones
mediante una lista y mostrando diferentes escritorios donde se pueden colocar
accesos directos a aplicaciones o incluso widgets, que son también aplicaciones
de esta capa.
No hay comentarios.:
Publicar un comentario