El Proyecto de código abierto de Android (AOSP) es el código fuente de Android disponible para el público y modificable. Cualquier persona puede descargar y modificar el AOSP para su dispositivo. El AOSP proporciona una implementación completa y totalmente funcional de la plataforma móvil de Android.
Existen 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 superar 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 con Android.
Arquitectura del AOSP
La pila de software del AOSP contiene las siguientes capas:
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 únicamente con la API de Android. Google Play Store se usa ampliamente para encontrar y descargar apps para Android, aunque existen muchas otras alternativas. En algunos casos, es posible que el fabricante de un dispositivo quiera preinstalar una app para Android que admita la funcionalidad principal del dispositivo. Si te interesa desarrollar apps para Android, consulta developers.android.com.
- App con privilegios
- Una app creada con una combinación de las APIs de Android y del sistema. Estas apps deben preinstalarse 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. Dado que un fabricante de dispositivos puede acceder directamente a las 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 OEM para su inclusión en aplicaciones integradas. Estas APIs están marcadas como @SystemApi en el código fuente.
- API de Android
- La API de Android es la API disponible públicamente para los desarrolladores de apps para Android de terceros. Para obtener información sobre la API de Android, consulta la referencia de la API de Android.
- Framework de Android
- Es un grupo de clases, interfaces y otro código precompilado de Java sobre el que se compilan las apps. Se puede acceder públicamente a partes del framework a través 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. - Android Runtime (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 para que los proveedores de hardware la implementen. Los HAL permiten que Android sea independiente de las implementaciones de controladores de nivel inferior. El uso de un 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 del HAL.
- Daemons y bibliotecas nativos
Los daemons nativos en esta capa incluyen
init
,healthd
,logd
ystoraged
. 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 del usuario.Las bibliotecas nativas en esta capa incluyen
libc
,liblog
,libutils
,libbinder
ylibselinux
. 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 del usuario.- Kernel
El kernel es la parte central de cualquier sistema operativo y se comunica con el hardware subyacente de un dispositivo. Cuando es posible, el kernel del 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.
Próximos pasos
- 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 menú de navegación de la izquierda y comienza con la descripción general de esa sección.