Android 11 添加了一个新的 HAL,IDumpstateDevice(版本 1.1)。此 HAL 向包含在标准错误报告中的更严格范围的供应商日志公开了新方法,并允许用户构建打开和关闭供应商登录(用户构建的默认设置为关闭)。这使 OEM 可以更好地控制特定类型的错误报告中包含的内容。
如果选择实施此可选 HAL,此功能会影响 OEM。 SoC 可能会受到影响,具体取决于 OEM 选择使用此 HAL 公开的内容。对运营商没有预期的影响。
您在错误报告中包含的内容取决于您发现哪些信息与调试相关,但通常越详细越好。
示例和来源
IDumpstateDevice(已弃用)1.0 版本的默认实现显示了使用 dumpstate util 库的示例: frameworks/native/cmds/dumpstate/DumpstateUtil.h
。还有一个 1.1 HAL 的 Cuttlefish 实现: device/google/cuttlefish/guest/monitoring/dumpstate_ext/*
。
源代码位于此处:
- HAL 文件位于
hardware/interfaces/dumpstate/1.1/
下。 - 控制错误报告内容的 dumpstate 本机代码位于
frameworks/native/cmds/dumpstate/
下。
执行
要实现此 HAL,请实现android.hardware.dumpstate@1.1::IDumpstateDevice
HAL 接口。有许多可能的DumpstateMode
值,但并非所有值都可能由单个设备支持(例如,非 Wear OS 设备的 WEAR)。
实现转储状态 HAL 是可选的。所有搭载 Android 11 的新设备如果实现了 Dumpstate HAL,则必须实现 IDumpstateDevice 1.1。在 Android 11 之前已经实现 IDumpstateDevice 1.0 的设备应该相对容易升级到 1.1,强烈建议这样做,因为它大大减少了错误报告中包含的无关私人信息的数量。
此功能取决于 Android 11 中也包含的核心转储状态更改,位于frameworks/native/cmds/dumpstate
。
实施此 HAL 可能需要对某些系统属性、文件等进行一些 SEPolicy 更改以使事情完全正常运行,并且需要与供应商协调以将所有相关信息转储到错误报告中。
定制
设备用户可以使用开发人员设置打开或关闭供应商登录。当它关闭时, dumpstateBoard_1_1
可能仍会输出 OEM 确定的最少基本信息。关闭供应商注销会使IDumpstateDevice::dumpstateBoard
仅将基本信息添加到错误报告中,而将其打开则包括 OEM 选择的任何信息。
例如,您可以修改dumpstate.cpp
(它调用 IDumpstateDevice HAL 方法),以增加为完成dumpstateBoard
指定的超时时间。但是, dumpstate.cpp
的核心逻辑应该保持不变。
超时可以是任何值,但它们不应显着增加完成错误报告所需的时间。特别是, DumpstateMode::CONNECTIVITY
对时间非常敏感,需要尽可能快地运行以收集所有相关的调制解调器/Wi-Fi/网络日志。
验证
IDumpstateDevice 实现有一个 VTS 测试,一般BugreportManager
功能有功能单元测试。
推荐的手动测试用例是frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java
。