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 檔案位於
hardware/interfaces/dumpstate/1.1/
下。 - 控制錯誤報告內容的 dumpstate 本機程式碼位於
frameworks/native/cmds/dumpstate/
下。
執行
若要實作此 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
。