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

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只會新增必要資訊,開啟這項功能則會納入原始設備製造商選擇的任何資訊。

您可以修改 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