A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release anziché aosp-main per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Un Hardware Abstraction Layer (HAL) è un tipo di livello di astrazione con un'interfaccia standard da implementare per i fornitori di hardware. Un HAL consente ai fornitori di hardware di implementare funzionalità di livello inferiore specifiche del dispositivo senza influire sul codice o modificarlo nei livelli di livello superiore.
Termini obbligatori
Di seguito è riportato un elenco di definizioni dei termini utilizzati in questa sezione della documentazione:
Android Interface Definition Language (AIDL)
Un linguaggio simile a Java utilizzato per definire le interfacce in modo indipendente dal linguaggio di programmazione in uso. AIDL consente la comunicazione tra i client HAL e i servizi HAL.
HAL con binder
Un HAL che comunica con altri processi tramite chiamate di comunicazione tra processi (IPC) del binder. Gli HAL con binder vengono eseguiti in un processo separato dal client che li utilizza.
Gli HAL con binding vengono registrati con un gestore dei servizi in modo che i client possano accedere alle relative funzionalità. Gli HAL scritti per Android 8 e versioni successive sono
in formato binder
.
Client HAL
Il processo che accede al servizio HAL.
Interfaccia HAL
L'interfaccia comune utilizzata sia dal client sia dal servizio HAL per comunicare.
Servizio HAL
Il codice specifico dell'hardware, ad esempio quello che comunica con la videocamera del tuo dispositivo specifico. Devi implementare tutti gli HAL richiesti elencati nella tabella di compatibilità per la release che scegli come target nella partizione del fornitore.
Per ulteriori informazioni sulle matrici di compatibilità, consulta
Matrici di compatibilità.
Puoi anche creare una nuova interfaccia HAL o estendere l'interfaccia di un HAL per supportare le funzionalità uniche del tuo hardware.
Hardware Interface Definition Language (HIDL)
Un linguaggio utilizzato per definire le interfacce in modo indipendente dal linguaggio di programmazione utilizzato. HIDL consente la comunicazione tra i client HAL e i servizi HAL.
HAL dello stesso processo (SP)
Un insieme limitato di HAL con wrapping. L'appartenenza al set è controllata da Google. Gli HAL SP includono:
HAL di mapper C stabile 5
OpenGL
Vulkan
android.hidl.memory@1.0 (fornito dal sistema Android, sempre con wrapping)
android.hardware.renderscript@1.0
HAL con wrapping
Un servizio HAL creato prima di Android 8, ma inserito in un wrapper AIDL o HIDL per funzionare con Android 8 e versioni successive.
Passaggi successivi
Per scoprire come implementare un servizio HAL, consulta
AIDL per gli HAL.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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)."]]