As part of the Android 8.0 rearchitecture of the lower layers of the Android OS to support better modularity, devices running Android 8.0 must support binderized or passthrough HALs:
Device | Passthrough | Binderized |
---|---|---|
Launch with Android 8.0 | HALs listed in Passthrough HALs must be passthrough. | All other HALs are binderized (including HALs that are vendor extensions). |
Upgrade to Android 8.0 | HALs listed in Passthrough HALs must be passthrough. | HALs listed in Binderized HALs must be binderized. |
All other HALs provided by the vendor image can be in passthrough OR binderized mode. |
Android requires the following HALS to to be binderized on all Android devices regardless of whether they are launch devices or upgrade devices:
android.hardware.biometrics.fingerprint@2.1
. Replaces
fingerprintd
which is no longer in Android 8.0.android.hardware.configstore@1.0
. New in Android 8.0.android.hardware.dumpstate@1.0
. The original interface provided
by this HAL could not be shimmed and was changed. Because of this,
dumpstate_board
must be re-implemented on a given device (this is
an optional HAL).android.hardware.graphics.allocator@2.0
. Required to be
binderized in Android 8.0 so file descriptors don't have to be shared between
trusted and untrusted processes.android.hardware.radio@1.0
. Replaces the interface provided by
rild
which lives in its own process.android.hardware.usb@1.0
. New in Android 8.0.android.hardware.wifi@1.0
. New in Android 8.0, replaces the
legacy Wi-Fi HAL library that was loaded into system_server
.android.hardware.wifi.supplicant@1.0
. A HIDL interface over the
existing wpa_supplicant
process.NOTE: Android provides the following HIDL
interfaces which will always be in binderized mode:
android.frameworks.*
, android.system.*
, and
android.hidl.*
(except for android.hidl.memory@1.0
as described below).
Android requires the following HALs to be in passthrough mode on all Android devices regardless of whether they are launch devices or upgrade devices:
android.hardware.graphics.mapper@1.0
. Maps memory into the
process it lives in.android.hardware.renderscript@1.0
. Passes items in the same
process (equivalent to openGL
).All HALs not listed above must be binderized for launch devices.
Same-Process HALs (SP-HALs) always open in the same process in which they are used. They include all HALs not expressed in HIDL as well as some that are not binderized. Membership in the SP-HAL set is controlled only by Google, with no exceptions.
SP-HALs include the following:
openGL
Vulkan
android.hidl.memory@1.0
(provided by the Android system, always
passthrough)android.hardware.graphics.mapper@1.0
.android.hardware.renderscript@1.0
Conventional HALs (deprecated in Android 8.0) are interfaces that conform to a specific named and versioned application binary interface (ABI). The bulk of Android system interfaces (camera, audio, sensors, etc.) are in the form of conventional HALs, which are defined under hardware/libhardware/include/hardware.
Legacy HALs (also deprecated in Android 8.0) are interfaces that predate conventional HALs. A few important subsystems (Wi-Fi, Radio Interface Layer, and Bluetooth) are legacy HALs. While there's no uniform or standardized way to describe a legacy HAL, anything predating Android 8.0 that is not a conventional HAL is a legacy HAL. Parts of some legacy HALs are contained in libhardware_legacy, while other parts are interspersed throughout the codebase.