Android 11は、新しいHALであるIDumpstateDevice(バージョン1.1)を追加します。このHALは、新しいメソッドを、標準のバグレポートに含まれるベンダーログのスコープをより厳密に公開し、ユーザービルドでベンダーログのオンとオフを切り替えることができるようにします(ユーザービルドのデフォルトはオフです)。これにより、OEMは、特定の種類のバグレポートに含まれる内容をより細かく制御できます。
このオプションのHALを実装することを選択した場合、この機能はOEMに影響を与えます。 OEMがこのHALで公開することを選択したものによっては、SoCが影響を受ける可能性があります。運送業者への影響は予想されていません。
バグレポートに含める内容は、デバッグに関連すると思われる情報によって異なりますが、一般的には詳細な方が適しています。
例とソース
(非推奨の)1.0バージョンのIDumpstateDeviceのデフォルトの実装があり、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
インターフェースを実装します。考えられる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
が完了するために指定されたタイムアウトを増やすことができます。ただし、 dumpstate.cpp
のコアロジックは変更しないでください。
タイムアウトには任意の値を指定できますが、バグレポートの完了にかかる時間が大幅に長くなることはありません。特に、 DumpstateMode::CONNECTIVITY
は時間に非常に敏感であり、関連するすべてのモデム/ Wi-Fi /ネットワークログを収集するために可能な限り高速に実行する必要があります。
検証
IDumpstateDevice実装のVTSテストがあり、一般的なBugreportManager
機能の機能ユニットテストがあります。
推奨される手動テストケースは、 frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java
です。