Mulai 27 Maret 2025, sebaiknya gunakan android-latest-release, bukan aosp-main, untuk mem-build dan berkontribusi pada AOSP. Untuk mengetahui informasi selengkapnya, lihat Perubahan pada AOSP.
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Hardware abstraction layer (HAL) adalah jenis lapisan abstraksi dengan
antarmuka standar yang dapat diterapkan oleh vendor hardware. HAL memungkinkan vendor
hardware menerapkan fitur khusus perangkat tingkat rendah tanpa memengaruhi atau
mengubah kode di lapisan tingkat tinggi.
Persyaratan yang diperlukan
Berikut adalah daftar definisi untuk istilah yang digunakan di bagian dokumentasi ini:
Android Interface Definition Language (AIDL)
Bahasa mirip Java yang digunakan untuk menentukan antarmuka dengan cara yang tidak bergantung pada
bahasa pemrograman yang digunakan. AIDL memungkinkan komunikasi antara
klien HAL dan layanan HAL.
HAL yang Di-binderkan
HAL yang berkomunikasi dengan proses lain
menggunakan
panggilan
binder inter-process communication (IPC). HAL yang di-binderkan berjalan dalam proses terpisah dari klien yang menggunakannya.
HAL yang di-binderkan terdaftar dengan pengelola layanan sehingga klien dapat
mengakses kemampuannya. HAL yang ditulis untuk Android 8 dan yang lebih tinggi
di-binder.
Klien HAL
Proses yang mengakses layanan HAL.
Antarmuka HAL
Antarmuka umum yang digunakan oleh klien dan layanan HAL untuk berkomunikasi.
Layanan HAL
Kode khusus hardware, seperti kode yang berkomunikasi dengan kamera
perangkat tertentu. Anda harus menerapkan semua HAL yang diperlukan yang tercantum dalam
matriks kompatibilitas untuk rilis yang Anda targetkan di partisi vendor.
Untuk informasi lebih lanjut tentang matriks kompatibilitas, lihat
Matriks kompatibilitas.
Anda juga dapat membuat antarmuka HAL baru, atau memperluas antarmuka HAL, untuk
mendukung kemampuan unik hardware Anda.
Hardware Interface Definition Language (HIDL)
Bahasa yang digunakan untuk menentukan antarmuka dengan cara yang tidak bergantung pada
bahasa pemrograman yang digunakan. HIDL memungkinkan komunikasi antara
klien HAL dan layanan HAL.
HAL Proses yang Sama (SP)
Kumpulan HAL yang digabungkan dan dibatasi. Langganan dalam set dikontrol oleh
Google. HAL SP mencakup:
HAL mapper C stabil 5
OpenGL
Vulkan
android.hidl.memory@1.0 (disediakan oleh sistem Android, selalu digabungkan)
android.hardware.renderscript@1.0
HAL yang digabungkan
Layanan HAL yang dibuat sebelum Android 8, tetapi telah digabungkan dalam
wrapper AIDL atau HIDL agar berfungsi dengan Android 8 dan yang lebih tinggi.
Apa selanjutnya?
Untuk mempelajari cara mengimplementasikan layanan HAL, lihat
AIDL untuk HAL.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 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)."]]