Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
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 . Los desarrolladores de aplicaciones utilizan con mayor frecuencia el marco de la aplicación. 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.
  • Carpeta 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. En el nivel del marco de la aplicación, esta comunicación está oculta al desarrollador y las cosas parecen "simplemente funcionar".
  • Servicios del sistema . Los servicios del sistema son componentes modulares y enfocados, como el Administrador de ventanas, el Servicio de búsqueda o el Administrador de notificaciones. La funcionalidad expuesta por las API del marco de 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 relacionados con la reproducción y grabación de medios).
  • Capa de abstracción de hardware (HAL) . Una HAL define una interfaz estándar para que la implementen los proveedores de hardware, lo que permite que Android sea independiente de las implementaciones de controladores de nivel inferior. El uso de una 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 obtener más información, 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), wake locks (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 funciones requeridas (como el controlador del binder). Sin embargo, recomendamos utilizar la última versión del kernel de Android. Para obtener más información, consulte Creación de núcleos .

Lenguaje de definición de interfaz HAL (HIDL)

Android 8.0 rediseñó la estructura del sistema operativo Android (en un proyecto conocido como Treble ) para que sea más fácil, 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 la interfaz HAL (HIDL, pronunciado "hide-l") especifica la interfaz entre una HAL y sus usuarios, lo que permite reemplazar el marco de Android sin reconstruir las 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 proveedores o fabricantes de SOC crean los HAL una vez y los colocan en una partición /vendor en el dispositivo; el marco, en su propia partición, se puede reemplazar con una actualización inalámbrica (OTA) sin volver a compilar las HAL.

La diferencia entre la arquitectura heredada de Android 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 versiones posteriores, una nueva interfaz de proveedor estable brinda acceso a las partes específicas del hardware de Android, por lo que los fabricantes de dispositivos pueden ofrecer 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 lanzan con Android 8.0 y versiones posteriores pueden aprovechar la nueva arquitectura. Para garantizar la compatibilidad con las implementaciones de los proveedores, la interfaz del proveedor es validada por Vendor Test Suite (VTS) , que es análoga a Compatibility Test Suite (CTS) . Puede usar VTS para automatizar las pruebas del kernel de HAL y OS en arquitecturas Android heredadas y actuales.

Recursos de arquitectura

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

  • Tipos HAL . Describe HAL vinculados, de paso a través, del mismo proceso (SP) y heredados.
  • HIDL (general) . Contiene información general sobre la interfaz entre una HAL y sus usuarios.
  • HIDL (C ++) . Contiene detalles para crear implementaciones C ++ de interfaces HIDL.
  • HIDL (Java) . Contiene detalles sobre la interfaz de Java para interfaces HIDL.
  • ConfigStore HAL . Describe las API para acceder a los elementos de configuración de solo lectura que se usan para configurar el marco de Android.
  • Superposiciones de árbol de dispositivos . Proporciona detalles sobre el uso de superposiciones de árbol de dispositivos (DTO) en Android.
  • Kit de desarrollo nativo del proveedor (VNDK) . Describe el conjunto de bibliotecas exclusivas del proveedor para implementar las HAL del 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 cambios y personalizaciones de SELinux.

Además de los recursos en este sitio, los miembros del equipo de Treble publicaron Treble: Actualizaciones de software rápidas 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.