弃用 health@1.0

在根据标准 HAL 弃用时间表彻底弃用 health@1.0 之前,框架将继续支持 health@1.0。弃用 health@1.0(即从框架兼容性矩阵中移除相关条目)后,也必须从系统中移除 healthdlibbatterymonitor,以免 healthd 出现未知行为。由于 health@1.0 是可选 HAL,且 health@1.0 的所有 healthd 依赖项都受 NULL 检查的保护,因此弃用不得被任何事项打断。

根据弃用时间表,当 Android 移除旧版代码路径(healthd、health@1.0)时,Health@1.0 HAL 便会被弃用。此外,Android 还会移除以下内容:

  1. 框架中的 healthd 依赖项
  2. healthd
  3. 系统中的 health@1.0 HAL 定义库
  4. 框架兼容性矩阵中的 health@1.0 条目

移除 healthd

对于搭载 Android 9 以及升级至 Android 9 且在新的供应商映像中提供 Health 2.0 HAL 的设备,我们建议从系统映像中移除 healthd,以便节省磁盘空间以及加快启动速度。

为此,请执行以下操作:

  1. 从系统映像中移除 healthdhealthd.rc,方法是在 Soong 中向特定于设备的实现中添加以下行:

    cc_binary {
        name: "android.hardware.health@2.0-service.device_name"
        overrides: ["healthd"],
        // ...
    }
    

    或者,如果模块在 Make 中:

    LOCAL_MODULE_NAME := \
        android.hardware.health@2.0-service.device_name
    LOCAL_OVERRIDES_MODULES := healthd
    

    如果已安装默认实现 android.hardware.health@2.0-service,则改为实现特定于设备的 android.hardware.health@2.0-service.device_name。有关详情,请参阅实现 Health

  2. 将以下行添加到 BoardConfig.mk,以从框架清单中移除备份实例。这样可以确保框架清单正确反映设备上的 HAL,并让相关 VTS 测试可以顺利通过。

    DEVICE_FRAMEWORK_MANIFEST_FILE += \
        system/libhidl/vintfdata/manifest_healthd_exclude.xml