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:
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
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 de usuario.Las bibliotecas nativas de 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 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.