Android 11は、新しいHAL IDumpstateDevice(バージョン1.1)を追加します。このHALは、新しいメソッドを、標準のバグレポートに含まれるベンダーログのスコープをより厳密に公開し、ユーザービルドでベンダーログのオンとオフを切り替えられるようにします(ユーザービルドのデフォルトはオフです)。これにより、OEMは、特定の種類のバグレポートに何を含めるかをより細かく制御できます。
このオプションのHALを実装することを選択した場合、この機能はOEMに影響を与えます。 OEMがこのHALで公開することを選択したものによっては、SoCが影響を受ける可能性があります。運送業者への予想される影響はありません。
バグレポートに含める内容は、デバッグに関連すると思われる情報によって異なりますが、一般的には詳細な方が適しています。
例とソース
(非推奨の)1.0バージョンのIDumpstateDeviceのデフォルトの実装があり、dumpstateutilライブラリの使用例を示しています: 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
インターフェースを実装します。考えられるDumpstateMode
値は多数ありますが、すべてが単一のデバイスでサポートされるとは限りません(たとえば、Wear以外のOSデバイスの場合はWEAR)。
dumpstateHALの実装はオプションです。 Android 11で起動するすべての新しいデバイスは、Dumpstate HALを実装する場合、IDumpstateDevice1.1を実装する必要があります。 Android11より前にすでにIDumpstateDevice1.0を実装しているデバイスは、1.1にアップグレードするのが比較的簡単であるはずです。これにより、バグレポートに含まれる無関係な個人情報の量が大幅に削減されるため、アップグレードすることを強くお勧めします。
この機能は、 frameworks/native/cmds/dumpstate
下にあるAndroid11に含まれているコアのdumpstateの変更に依存します。
このHALを実装するには、特定のシステムプロパティ、ファイルなどにSEPolicyを変更して完全に機能させる必要があり、ベンダーと調整してすべての関連情報をバグレポートにダンプする必要があります。
カスタマイズ
デバイスユーザーは、開発者設定を使用してベンダーのログオンとログオフを切り替えることができます。オフにした場合でも、 dumpstateBoard_1_1
は、OEMによって決定された最小限の重要な情報を出力する場合があります。ベンダーのログをオフにすると、 IDumpstateDevice::dumpstateBoard
はバグレポートに重要な情報のみを追加し、オンにすると、OEMが選択した情報がすべて含まれます。
たとえば、 dumpstate.cpp
(IDumpstateDevice HALメソッドを呼び出す)をdumpstateBoard
して、 dumpstateBoard
が完了するまでのタイムアウトをdumpstateBoard
ことができます。ただし、 dumpstate.cpp
のコアロジックは変更しないでください。
タイムアウトには任意の値を指定できますが、バグレポートの完了にかかる時間が大幅に長くなることはありません。特に、 DumpstateMode::CONNECTIVITY
は時間に非常に敏感であり、関連するすべてのモデム/ Wi-Fi /ネットワークログを収集するために可能な限り高速に実行する必要があります。
検証
IDumpstateDevice実装のVTSテストがあり、一般的なBugreportManager
機能の機能ユニットテストがあります。
推奨される手動テストケースは、 frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java
です。