The framework will continue to work with health@1.0 until it is fully deprecated
according to the standard
HAL deprecation schedule.
When health@1.0 is deprecated (entry removed from
framework compatibility matrix),
healthd
and libbatterymonitor
must also be removed from system to avoid
unknown behaviors for healthd. As health@1.0 is an optional HAL and all
healthd
dependencies to health@1.0 are guarded by NULL checks, nothing should
break on deprecation.
When Android removes the legacy code path (healthd, health@1.0), Health@1.0 HAL is deprecated according to deprecation schedule. In addition, Android also removes the following:
- healthd dependency in framework
- healthd
- health@1.0 HAL definition library from system
- health@1.0 entry in framework compatibility matrix
Removing healthd
For devices launching with Android 9 and devices
upgrading to Android 9 that provide the Health 2.0 HAL
in the new vendor image, we recommend removing healthd
from the system image
to save disk space and speed boot time.
To do so:
Remove
healthd
andhealthd.rc
from the system image by adding the following line to the device-specific implementation in Soong:cc_binary { name: "android.hardware.health@2.0-service.device_name" overrides: ["healthd"], // ... }
Or, if the module is in Make:
LOCAL_MODULE_NAME := \ android.hardware.health@2.0-service.device_name LOCAL_OVERRIDES_MODULES := healthd
If the default implementation
android.hardware.health@2.0-service
is installed, implement a device-specificandroid.hardware.health@2.0-service.device_name
instead. For more information, see Implementing Health.Add the following lines to
BoardConfig.mk
to remove the backup instance from framework manifest. This ensures the framework manifest correctly reflects the HALs on the device and allows the relevant VTS tests to pass.DEVICE_FRAMEWORK_MANIFEST_FILE += \ system/libhidl/vintfdata/manifest_healthd_exclude.xml