Google se compromete a promover la equidad racial para las comunidades negras. Ver cómo.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Arquitectura de Android

La arquitectura del sistema Android contiene los siguientes componentes:

Descripción general de la arquitectura del sistema Android
Figura 1. Arquitectura del sistema Android
  • Marco de aplicación . El marco de la aplicación es utilizado con mayor frecuencia por los desarrolladores de aplicaciones. Como desarrollador de hardware, debe conocer las API de desarrollador, ya que muchas se asignan directamente a las interfaces HAL subyacentes y pueden proporcionar información útil sobre la implementación de controladores.
  • Binder IPC . El mecanismo Binder Inter-Process Communication (IPC) permite que el marco de la aplicación cruce los límites del proceso y llame al código de servicios del sistema Android. Esto permite que las API de marco de alto nivel interactúen con los servicios del sistema Android. A nivel de marco de aplicación, esta comunicación está oculta para el desarrollador y las cosas parecen "simplemente funcionar".
  • Servicios del sistema . Los servicios del sistema son componentes modulares y específicos, como el Administrador de ventanas, el Servicio de búsqueda o el Administrador de notificaciones. La funcionalidad expuesta por las API del marco de la aplicación se comunica con los servicios del sistema para acceder al hardware subyacente. Android incluye dos grupos de servicios: sistema (como Window Manager y Notification Manager) y medios (servicios involucrados en la reproducción y grabación de medios).
  • Capa de abstracción de hardware (HAL) . Un HAL define una interfaz estándar para que los proveedores de hardware implementen, lo que permite que Android sea independiente de las implementaciones de controladores de nivel inferior. El uso de un HAL le permite implementar la funcionalidad sin afectar o modificar el sistema de nivel superior. Las implementaciones de HAL se empaquetan en módulos y el sistema Android las carga en el momento adecuado. Para más detalles, consulte Capa de abstracción de hardware (HAL) .
  • Kernel de Linux . Desarrollar los controladores de su dispositivo es similar a desarrollar un controlador de dispositivo Linux típico. Android usa una versión del kernel de Linux con algunas adiciones especiales como Low Memory Killer (un sistema de administración de memoria que es más agresivo para preservar la memoria), bloqueos de PowerManager (un servicio del sistema PowerManager ), el controlador Binder IPC y otras características importantes para una plataforma móvil integrada. Estas adiciones son principalmente para la funcionalidad del sistema y no afectan el desarrollo del controlador. Puede usar cualquier versión del kernel siempre que admita las características requeridas (como el controlador de carpeta). Sin embargo, recomendamos utilizar la última versión del kernel de Android. Para más detalles, vea Creación de núcleos .

Lenguaje de definición de interfaz HAL (HIDL)

Android 8.0 rediseñó el marco del sistema operativo Android (en un proyecto conocido como Treble ) para que sea más fácil, más rápido y menos costoso para los fabricantes actualizar los dispositivos a una nueva versión de Android. En esta nueva arquitectura, el lenguaje de definición de interfaz HAL (HIDL, pronunciado "hide-l") especifica la interfaz entre un HAL y sus usuarios, lo que permite reemplazar el marco de Android sin reconstruir los HAL.

HIDL separa la implementación del proveedor (software de nivel inferior específico del dispositivo escrito por fabricantes de silicio) del marco del sistema operativo Android a través de una nueva interfaz de proveedor. Los vendedores o fabricantes de SOC construyen HAL una vez y los colocan en una partición /vendor en el dispositivo; El marco, en su propia partición, puede ser reemplazado con una actualización inalámbrica (OTA) sin volver a compilar los HAL.

La diferencia entre la arquitectura de Android heredada y la arquitectura actual basada en HIDL está en el uso de la interfaz del proveedor:

  • En Android 7.xy versiones anteriores, no existe una interfaz de proveedor formal, por lo que los fabricantes de dispositivos deben actualizar grandes porciones del código de Android para mover un dispositivo a una versión más nueva de Android:

    Figura 2. Entorno de actualización de Android heredado
  • En Android 8.0 y superior, una nueva interfaz estable de proveedor proporciona acceso a las partes específicas de hardware de Android, por lo que los fabricantes de dispositivos pueden entregar nuevas versiones de Android simplemente actualizando el marco del sistema operativo Android, sin necesidad de trabajo adicional por parte de los fabricantes de silicio:

    Figura 3. Entorno actual de actualización de Android

Todos los dispositivos nuevos que se inicien con Android 8.0 y superior pueden aprovechar la nueva arquitectura. Para garantizar la compatibilidad de las implementaciones del proveedor, la interfaz del proveedor está validada por el Vendor Test Suite (VTS) , que es análogo al Compatibility Test Suite (CTS) . Puede usar VTS para automatizar las pruebas de kernel HAL y OS en arquitecturas Android actuales y heredadas.

Recursos de arquitectura

Para obtener detalles sobre la arquitectura de Android, consulte las siguientes secciones:

  • Tipos de HAL . Describe HAL vinculados, passthrough, Same-Process (SP) y heredados.
  • HIDL (general) . Contiene información general sobre la interfaz entre un HAL y sus usuarios.
  • HIDL (C ++) . Contiene detalles para crear implementaciones en C ++ de interfaces HIDL.
  • HIDL (Java) . Contiene detalles sobre la interfaz Java para interfaces HIDL.
  • ConfigStore HAL . Describe las API para acceder a los elementos de configuración de solo lectura utilizados para configurar el marco de Android.
  • Dispositivo de superposiciones de árbol . Proporciona detalles sobre el uso de superposiciones de árbol de dispositivos (DTO) en Android.
  • Vendor Native Development Kit (VNDK) . Describe el conjunto de bibliotecas exclusivas de proveedor para implementar HAL de proveedor.
  • Objeto de interfaz de proveedor (VINTF) . Describe los objetos que agregan información relevante sobre un dispositivo y hacen que esa información esté disponible a través de una API consultable.
  • SELinux para Android 8.0 . Detalles de los cambios y personalizaciones de SELinux.

Además de los recursos en este sitio, los miembros del equipo de Treble publicaron Treble: actualizaciones rápidas de software mediante la creación de un equilibrio en un ecosistema de software activo de partes interesadas distribuidas globalmente . El documento es gratuito para los miembros de ACM y los no miembros pueden comprar o leer el resumen.