Bien. Por fin empiezan las cosas que he venido a aprender. Ha habido alguna lección que no he colocado aquí porque eran cosas muy simples que, o bien conocía ya, o bien son fáciles de entender y no necesitan verse dos veces. Pero ahora es diferente, así que voy a ponerlo aquí porque voy a necesitar tenerlo a mano. Dale.
Arquitectura de 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.
Figura
2: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
que respondiera mejor a estas limitaciones: la máquina virtual
Dalvik.
Algunas
características de la
Dalvik
son
que
facilitan la
optimización de recursos con
los
ficheros Dalvik ejecutables (.dex) –formato optimizado para ahorrar
memoria-
y
que, además,
está basada en registros. Cada aplicación corre en su propio
proceso Linux con su propia instancia. Por
otro lado, delega
al kernel de Linux algunas funciones como el
threading
y
el manejo de la memoria a bajo nivel.
También
se incluye en el Runtime
de Android el
“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.
·
Media
Framework:
librería basada en PacketVideo's OpenCORE; soporta códecs 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.
Entorno de aplicación
Proporciona
una plataforma de desarrollo libre para aplicaciones con gran riqueza
e innovaciones (sensores, localización, servicios, barra de
notificaciones...).
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.
Una
de las mayores fortalezas del entorno de aplicación de Android es
que se aprovecha el lenguaje de programación Java. El SDK de Android
no acaba de ofrecer todo lo disponible para su estándar del entorno
de ejecución Java (JRE), pero es compatible con una fracción muy
significativa de la misma.
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).
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, aunque 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