A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release en lugar de aosp-main para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Descripción general de la capa de abstracción de hardware (HAL)
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Una capa de abstracción de hardware (HAL) es un tipo de capa de abstracción con una interfaz estándar que los proveedores de hardware pueden implementar. Un HAL permite a los proveedores de hardware implementar funciones específicas del dispositivo de nivel inferior sin afectar ni modificar el código en capas de nivel superior.
Términos requeridos
A continuación, se incluye una lista de definiciones de los términos que se usan en esta sección de la documentación:
Lenguaje de definición de la interfaz de Android (AIDL)
Un lenguaje similar a Java que se usa para definir interfaces de una manera independiente del lenguaje de programación que se usa. AIDL permite la comunicación entre los clientes y los servicios de HAL.
HAL vinculado
Un HAL que se comunica con otros procesos con llamadas de comunicación entre procesos (IPC) de Binder Los HAL vinculados se ejecutan en un proceso independiente del cliente que los usa.
Los HAL vinculados se registran con un administrador de servicios para que los clientes puedan acceder a sus funciones. Los HAL escritos para Android 8 y versiones posteriores están vinculados.
Cliente de HAL
Es el proceso que accede al servicio de HAL.
Interfaz de HAL
Es la interfaz común que usan el cliente y el servicio de HAL para comunicarse.
Servicio de HAL
Es el código específico del hardware, como el código que se comunica con la cámara de tu dispositivo específico. Debes implementar todos los HAL obligatorios que se enumeran en la matriz de compatibilidad para la versión a la que te orientas en tu partición del proveedor.
Para obtener más información sobre las matrices de compatibilidad, consulta Matrices de compatibilidad.
También puedes crear una nueva interfaz de HAL o extender la interfaz de un HAL para admitir las capacidades únicas de tu hardware.
Lenguaje de definición de interfaz de hardware (HIDL)
Es un lenguaje que se usa para definir interfaces de una manera independiente del lenguaje de programación que se usa. HIDL habilita la comunicación entre los clientes de HAL y los servicios de HAL.
HAL de mismo proceso (SP)
Un conjunto restringido de HAL unidos. Google controla la membresía en el conjunto. Los HAL de SP incluyen lo siguiente:
HAL de C mapper 5 estable
OpenGL
Vulkan
android.hidl.memory@1.0 (proporcionado por el sistema Android, siempre unido)
android.hardware.renderscript@1.0
HAL unido
Un servicio de HAL que se creó antes de Android 8, pero que se unió en un wrapper de AIDL o HIDL para funcionar con Android 8 y versiones posteriores.
Próximos pasos
Para obtener información sobre cómo implementar un servicio de HAL, consulta AIDL para HALs.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-07-27 (UTC)"],[],[],null,["# Hardware abstraction layer (HAL) overview\n\nA *hardware abstraction layer (HAL)* is type of abstraction layer with a\nstandard interface for hardware vendors to implement. A HAL allows hardware\nvendors to implement lower-level, device-specific features without affecting or\nmodifying code in higher-level layers.\n| **Note:** HALs existed before Android 8. However, Android 8 ensured each HAL had a standard interface. For an explanation of HAL architecture before Android 8, refer to [Legacy HALs](/docs/core/architecture/hal/archive).\n\nRequired terms\n--------------\n\nFollowing is a list of definitions for terms used in this section of\ndocumentation:\n\n*Android Interface Definition Language (AIDL)*\n: A Java-like language used to define interfaces in a way that is independent of\n the programming language being used. AIDL allows communication between\n HAL clients and HAL services.\n\n*Binderized HAL*\n: A HAL that communicates with other processes\n using\n [binder inter-process communication (IPC)](/docs/core/architecture/hidl/binder-ipc)\n calls. Binderized HALs run in a separate process from the client that uses them.\n Binderized HALs are registered with a service manager so that clients can\n access their capabilities. HALs written for Android 8 and higher are\n binderized.\n\n*HAL client*\n: The process that accesses the HAL service.\n\n*HAL interface*\n: The common interface used by both the HAL client and service to communicate.\n\n*HAL service*\n\n: The hardware-specific code, such as the code that talks to your specific\n device's camera. You must implement all required HALs listed in the\n compatibility matrix for the release you target in your vendor partition.\n For further information on compatibility matrixes, see\n [Compatibility matrixes](/docs/core/architecture/vintf/comp-matrices).\n\n You can also create a new HAL interface, or extend the interface of a HAL, to\n support your hardware's unique capabilities.\n\n*Hardware Interface Definition Language (HIDL)*\n\n: A language used to define interfaces in a way that is independent of the\n programming language being used. HIDL enables communication between\n HAL clients and HAL services.\n\n | **Note:** As of Android 13, HIDL has been deprecated. Instead of HIDL, you should use Android Interface Definition Language (AIDL) for HALs. HALs previously written using [HIDL](/docs/core/architecture/hidl) are supported.\n\n*Same Process (SP) HAL*\n\n: A restricted set of wrapped HALs. Membership in the set is controlled by\n Google. SP HALs include:\n\n - Stable C mapper 5 HAL\n - OpenGL\n - Vulkan\n - android.hidl.memory@1.0 (provided by the Android system, always wrapped)\n - android.hardware.renderscript@1.0\n\n | **Note:** Some HAL implementations wrap legacy interfaces, such as those in `libhardware`, in an AIDL or HIDL wrapper.\n\n*Wrapped HAL*\n\n: A HAL service that was created before Android 8, but has been wrapped in an\n AIDL or HIDL wrapper to work with Android 8 and higher.\n\nWhat's next?\n------------\n\n- To learn how to implement a HAL service, refer to [AIDL for HALs](/docs/core/architecture/aidl/aidl-hals).\n- To learn how to create or extend an existing HAL, refer to [Attached extended interfaces](/docs/core/architecture/aidl/aidl-hals#attached-extensions)."]]