特定のベンダー ロギングを実装する

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 を実装するには、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 です。