Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Arquitectura de Android

La arquitectura del sistema Android contiene los siguientes componentes:

Descripción general de la arquitectura del sistema Android
Arquitectura del Sistema Figura 1. Android
  • Marco de la aplicación. El marco de la aplicación lo utilizan con mayor frecuencia 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.
  • 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 para el 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 administrador de ventanas y administración de notificación) y los medios de comunicación (servicios implicados en la reproducción y grabación de los medios de comunicación).
  • 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 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, véase 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. Usos Android una versión del kernel de Linux con algunas adiciones especiales como Killer memoria baja (un sistema de gestión de memoria que es más agresivo en la memoria preservando), cerraduras estela (una PowerManager servicio del sistema), el conductor Carpeta 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 más detalles, véase el Edificio núcleos .

Lenguaje de definición de interfaz HAL (AIDL / HIDL)

Android 8.0 rediseñado el marco de Android OS (en un proyecto conocido como agudos) para que sea más fácil, más rápido y menos costoso para los fabricantes de dispositivos para actualizar 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. En Android 10, las funciones de HIDL se incorporaron a AIDL. Desde entonces, HIDL está obsoleto y solo lo utilizan los subsistemas que aún no se han convertido a AIDL.

Treble 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. Vendedores o fabricantes SOC construir HAL de una vez y colocarlos en un /vendor partición en el dispositivo; el marco, en su propia partición, puede entonces ser reemplazado con un over-the-air (OTA) actualización sin recompilar los HAL.

La diferencia entre la arquitectura heredada de Android y la arquitectura actual basada en IDL 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:

    Entorno de actualización Figura 2. Legado Android
  • 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:

    Entorno de actualización Figura 3. Android actual

Todos los dispositivos nuevos que se lanzan con Android 8.0 y versiones posteriores pueden aprovechar la nueva arquitectura. Para asegurar la compatibilidad hacia adelante de las implementaciones de los proveedores, la interfaz de proveedor es validado por el Test Suite Vendor (VTS) , que es análoga a la del conjunto de pruebas de compatibilidad (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 de HAL . Describe HAL vinculados, de paso a través, del mismo proceso (SP) y heredados.
  • AIDL . Documentación sobre AIDL, ya sea que se utilice de forma general o como interfaz HAL.
  • 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 utilizan para configurar el marco de Android.
  • Superposiciones de dispositivos de árbol . Proporciona detalles sobre el uso de superposiciones de árbol de dispositivos (DTO) en Android.
  • Kit de Desarrollo proveedor nativo (VNDK) . Describe el conjunto de bibliotecas exclusivas del proveedor para implementar las HAL del proveedor.
  • Objeto Vendor Interface (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 agudos publicada Agudos: actualizaciones de software rápidas mediante la creación de un equilibrio en un software Ecosistema activa de las partes interesadas para difusión mundial . El documento es gratuito para los miembros de ACM y los no miembros pueden comprar o leer el resumen.