實作範圍限定的供應商記錄功能

Android 11 新增了 HAL IDumpstateDevice (版本 1.1)。這個 HAL 會公開新方法,以便更嚴格地限定標準錯誤報告中包含的供應商記錄,並允許使用者建構開啟及關閉供應商記錄 (使用者建構的預設值為關閉)。這可讓原始設備製造商進一步控管特定類型錯誤報告的內容。

如果 OEM 選擇實作這項選用 HAL,就會受到影響。視 OEM 選擇透過這個 HAL 公開的內容而定,SoC 可能會受到影響。預計不會對電信業者造成影響。

錯誤報告中要納入哪些內容,取決於您認為哪些資訊與偵錯相關,但一般來說,越詳細越好。

範例和來源

(已淘汰) 1.0 版的 IDumpstateDevice 預設實作方式會顯示使用 dumpstate 程式庫的範例: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 的新裝置都「必須」實作 IDumpstateDevice 1.1,前提是這些裝置實作了 Dumpstate HAL。如果裝置在 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