Descripción general de la arquitectura

El Proyecto de código abierto de Android (AOSP) está disponible públicamente y es un código fuente de Android modificable. Cualquier persona puede descargar y modificar AOSP para su dispositivo. El AOSP proporciona una implementación completa y funcional de la plataforma para dispositivos móviles de Android.

Hay dos niveles de compatibilidad para los dispositivos que implementan AOSP: compatibilidad con AOSP y compatibilidad con Android. Un dispositivo compatible con AOSP debe cumplir con la lista de requisitos del Documento de definición de compatibilidad (CDD). Un dispositivo compatible con Android debe cumplir con la lista de requisitos del CDD y los requisitos de software del proveedor (VSR), y con pruebas como las del Conjunto de pruebas del proveedor (VTS) y el Conjunto de pruebas de compatibilidad (CTS). Para obtener más información sobre la compatibilidad con Android, consulta el Programa de compatibilidad de Android.

Arquitectura de AOSP

La pila de software de AOSP contiene las siguientes capas:

Arquitectura de pila de software AOSP.

Figura 1: Arquitectura de pila de software AOSP.

A continuación, se incluye una lista de definiciones de los términos que se usan en la Figura 1:

App para Android
Una app creada solo con la API de Android. Google Play Store se usa mucho para encontrar y descargar apps para Android, aunque hay muchas otras alternativas. En algunos casos, es posible que un fabricante de dispositivos desee preinstalar una app para Android para admitir la funcionalidad principal del dispositivo. Si te interesa desarrollar apps para Android, consulta developers.android.com.
App con privilegios
Es una app creada con una combinación de las APIs del sistema y de Android. Estas apps deben estar preinstaladas como apps con privilegios en un dispositivo.
App del fabricante del dispositivo
Una app creada con una combinación de la API de Android, la API del sistema y el acceso directo a la implementación del framework de Android. Debido a que un fabricante de dispositivos podría acceder directamente a APIs inestables dentro del framework de Android, estas apps deben estar preinstaladas en el dispositivo y solo se pueden actualizar cuando se actualiza el software del sistema del dispositivo.
API del sistema
La API de System representa las APIs de Android disponibles solo para socios y OEMs para su inclusión en aplicaciones empaquetadas. Estas APIs se marcan como @SystemApi en el código fuente.
API de Android
La API de Android es la API disponible de forma pública para los desarrolladores de apps de Android de terceros. Para obtener información sobre la API de Android, consulta la Referencia de la API de Android.
Framework de Android
Un grupo de clases, interfaces y otro código precompilado de Java en el que se compilan las apps. Se puede acceder públicamente a partes del framework a través del uso de la API de Android. Otras partes del framework solo están disponibles para los OEM a través del uso de las APIs del sistema. El código del framework de Android se ejecuta dentro del proceso de una app.
Servicios del sistema
Los servicios del sistema son componentes modulares y enfocados, como system_server, SurfaceFlinger y MediaService. La funcionalidad que expone la API del framework de Android se comunica con los servicios del sistema para acceder al hardware subyacente.
Entorno de ejecución de Android (ART)
Un entorno de ejecución de Java proporcionado por AOSP. ART realiza la traducción del código de bytes de la app en instrucciones específicas del procesador que ejecuta el entorno de ejecución del dispositivo.
Capa de abstracción de hardware (HAL)
Una HAL es una capa de abstracción con una interfaz estándar que los proveedores de hardware deben implementar. Los HAL permiten que Android sea independiente de las implementaciones de controladores de nivel inferior. Usar una HAL te permite implementar funciones sin afectar ni modificar el sistema de nivel superior. Para obtener más información, consulta la descripción general de HAL.
Daems y bibliotecas nativos

Los demonios nativos de esta capa incluyen init, healthd, logd y storaged. Estos daemons interactúan directamente con el kernel o con otras interfaces y no dependen de una implementación de HAL basada en el espacio de usuario.

Las bibliotecas nativas de esta capa incluyen libc, liblog, libutils, libbinder y libselinux. Estas bibliotecas nativas interactúan directamente con el kernel o con otras interfaces y no dependen de una implementación de HAL basada en el espacio de usuario.

Kernel

El kernel es la parte central de cualquier sistema operativo y se comunica con el hardware subyacente de un dispositivo. Siempre que sea posible, el kernel de AOSP se divide en módulos independientes del hardware y módulos específicos del proveedor. Para obtener una descripción, incluidas las definiciones, de los componentes del kernel de AOSP, consulta la descripción general del kernel.

¿Qué sigue?

  • Si es la primera vez que usas el AOSP y quieres comenzar a desarrollar, consulta la sección de introducción.
  • Si quieres obtener más información sobre una capa específica del AOSP, haz clic en el nombre de la sección en el panel de navegación izquierdo y comienza con la descripción general de esa sección.