A partir de 27 de março de 2025, recomendamos usar android-latest-release em vez de aosp-main para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Visão geral da camada de abstração de hardware (HAL)
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Uma camada de abstração de hardware (HAL) é um tipo de camada de abstração com uma
interface padrão para implementação por fornecedores de hardware. Um HAL permite que os fornecedores
de hardware implementem recursos de nível mais baixo e específicos do dispositivo sem afetar ou
modificar o código em camadas de nível mais alto.
Termos obrigatórios
Confira a seguir uma lista de definições dos termos usados nesta seção da
documentação:
Linguagem de definição de interface do Android (AIDL)
Uma linguagem semelhante ao Java usada para definir interfaces de forma independente da
linguagem de programação usada. A AIDL permite a comunicação entre
clientes HAL e serviços HAL.
HAL com vinculação
Uma HAL que se comunica com outros processos
usando
chamadas de
comunicação entre processos (IPC) do binder. As HALs vinculadas são executadas em um processo separado do cliente que as usa.
Os HALs vinculados são registrados com um gerenciador de serviços para que os clientes possam
acessar os recursos. As HALs criadas para o Android 8 e versões mais recentes são
vinculadas.
Cliente HAL
O processo que acessa o serviço HAL.
Interface HAL
A interface comum usada pelo cliente e pelo serviço HAL para se comunicar.
Serviço HAL
O código específico do hardware, como o que se comunica com a câmera
específica do dispositivo. É necessário implementar todos os HALs necessários listados na
matriz de compatibilidade para a versão de destino na partição do fornecedor.
Para mais informações sobre matrizes de compatibilidade, consulte
Matrizes de compatibilidade.
Você também pode criar uma nova interface HAL ou estender a interface de uma HAL para
oferecer suporte aos recursos exclusivos do hardware.
Linguagem de definição de interface de hardware (HIDL)
Uma linguagem usada para definir interfaces de forma independente da
linguagem de programação usada. O HIDL permite a comunicação entre
clientes HAL e serviços HAL.
HAL de mesmo processo (SP)
Um conjunto restrito de HALs encapsulados. A associação ao conjunto é controlada pelo
Google. As HALs de SP incluem:
HAL do mapeador C estável 5
OpenGL
Vulkan
android.hidl.memory@1.0 (fornecido pelo sistema Android, sempre encapsulado)
android.hardware.renderscript@1.0
HAL encapsulada
Um serviço HAL que foi criado antes do Android 8, mas foi encapsulado em um
wrapper AIDL ou HIDL para funcionar com o Android 8 e versões mais recentes.
Quais são as próximas etapas?
Para saber como implementar um serviço HAL, consulte
AIDL para HALs.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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)."]]