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 ファイルは
hardware/interfaces/dumpstate/1.1/
にあります。 - バグレポートの内容を制御する dumpstate ネイティブ コードは、
frameworks/native/cmds/dumpstate/
にあります。
実装
この HAL を実装するには、android.hardware.dumpstate@1.1::IDumpstateDevice
HAL インターフェースを実装します。DumpstateMode
値は複数指定できますが、1 台のデバイスですべてがサポートされるわけではありません(例: Wear OS 以外のデバイスでは WEAR はサポートされません)。
dumpstate HAL の実装は必須ではありません。Android 11 でリリースするすべての新しいデバイスで、Dumpstate HAL を実装する場合は、IDumpstateDevice 1.1 を実装する必要があります。Android 11 より前のバージョンで IDumpstateDevice 1.0 を実装したデバイスは、比較的簡単に 1.1 にアップグレードでき、また、アップグレードするとバグレポートに含められる余分な個人情報が大幅に削減されるため、アップグレードを強くおすすめします。
この機能は、Android 11 にも含まれる、dumpstate の主な変更(frameworks/native/cmds/dumpstate
にあります)に依存しています。
この HAL を実装する場合は、完全な動作のために、特定のシステム プロパティやファイルなどで SEPolicy の変更がいくらか必要になる場合があります。また、関連するすべての情報をバグレポートにダンプするにはベンダー間の連携が必要になります。
カスタマイズ
デバイスのユーザーは、デベロッパーの設定を使用してベンダー ロギングの有効と無効を切り替えることができます。無効にしても、dumpstateBoard_1_1
は OEM が決定した必要最小限の情報を出力することがあります。ベンダー ロギングを無効にすると、IDumpstateDevice::dumpstateBoard
はバグレポートに必須情報のみを追加します。有効にすると、OEM が選択した情報がすべて含まれます。
dumpstate.cpp
(IdumpumDeviceDevice HAL メソッドを呼び出す)を変更して、たとえば dumpstateBoard
の完了に必要なタイムアウトを増やすことができます。ただし、dumpstate.cpp
のコアロジックは変更できません。
タイムアウトは任意の値にすることができますが、バグレポートの実行にかかる時間が大幅に長くなることはありません。特に、DumpstateMode::CONNECTIVITY
は時間的制約が高く、関連するモデム、Wi-Fi、ネットワークのすべてのログを収集するために、できるだけ高速に実行する必要があります。
検証
IDumstatestateDevice 実装の VTS テストと、一般的な BugreportManager
機能レベルの単体テストがあります。
推奨される手動テストケースは frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java
です。