实施范围供应商日志记录

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,请实现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