實施範圍內的供應商日誌記錄

Android 11 新增了新的 HAL,IDumpstateDevice(版本 1.1)。此 HAL 公開了新方法,以更嚴格地限制標準錯誤報告中包含的供應商日誌,並允許使用者建立開啟和關閉供應商日誌記錄(使用者建置的預設設定是關閉的)。這使 OEM 能夠更好地控制特定類型的錯誤報告中包含的內容。

如果 OEM 選擇實施此選用 HAL,則此功能會對其產生影響。 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)。

實作 dumpstate 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