À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release au lieu de aosp-main pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
Présentation de la couche d'abstraction matérielle (HAL)
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Une couche d'abstraction matérielle (HAL) est un type de couche d'abstraction avec une interface standard que les fournisseurs de matériel doivent implémenter. Un HAL permet aux fournisseurs de matériel d'implémenter des fonctionnalités de niveau inférieur spécifiques à l'appareil sans affecter ni modifier le code des couches de niveau supérieur.
Conditions requises
Vous trouverez ci-dessous la liste des définitions des termes utilisés dans cette section de la documentation:
Langage de définition d'interface Android (AIDL)
Langage semblable à Java utilisé pour définir des interfaces de manière indépendante du langage de programmation utilisé. AIDL permet la communication entre les clients HAL et les services HAL.
HAL lié
HAL qui communique avec d'autres processus à l'aide d'appels de communication inter-processus (IPC) de liaison. Les HAL liés s'exécutent dans un processus distinct du client qui les utilise.
Les HAL liées sont enregistrées auprès d'un gestionnaire de services afin que les clients puissent accéder à leurs fonctionnalités. Les HAL écrites pour Android 8 et versions ultérieures sont liées.
Client HAL
Processus qui accède au service HAL.
Interface HAL
Interface commune utilisée par le client et le service HAL pour communiquer.
Service HAL
Code spécifique au matériel, comme le code qui communique avec l'appareil photo de votre appareil spécifique. Vous devez implémenter tous les HAL requis listés dans la matrice de compatibilité pour la version que vous ciblez dans votre partition de fournisseur.
Pour en savoir plus sur les matrices de compatibilité, consultez la section Matrices de compatibilité.
Vous pouvez également créer une interface HAL ou étendre l'interface d'un HAL pour prendre en charge les fonctionnalités uniques de votre matériel.
Hardware Interface Definition Language (HIDL)
Langage utilisé pour définir des interfaces de manière indépendante du langage de programmation utilisé. HIDL permet la communication entre les clients HAL et les services HAL.
HAL Same Process (SP)
Ensemble limité de HAL encapsulés. L'appartenance à l'ensemble est contrôlée par Google. Les HAL SP incluent:
HAL du mappeur C stable 5
OpenGL
Vulkan
android.hidl.memory@1.0 (fourni par le système Android, toujours encapsulé)
android.hardware.renderscript@1.0
HAL encapsulé
Service HAL créé avant Android 8, mais encapsulé dans un wrapper AIDL ou HIDL pour fonctionner avec Android 8 ou version ultérieure.
Et maintenant ?
Pour savoir comment implémenter un service HAL, consultez la section AIDL pour les HAL.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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)."]]