2025 年 3 月 27 日より、AOSP のビルドとコントリビューションには aosp-main
ではなく android-latest-release
を使用することをおすすめします。詳細については、AOSP の変更をご覧ください。
特定のベンダー ロギングを実装する
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
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
です。
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-03-26 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-03-26 UTC。"],[],[],null,["# Implement scoped vendor logging\n\nAndroid 11 adds a new HAL, IDumpstateDevice (version\n1.1). This HAL exposes new methods to more tightly scope vendor logs that are\nincluded in standard bug reports, as well as to allow user builds to turn vendor\nlogging on and off (the default for user builds is off). This gives OEMs more\ncontrol over what gets included in particular types of bug reports.\n\nThis feature impacts OEMs if they choose to implement this optional HAL. SoCs\nmight be impacted, depending on what the OEM chooses to expose with this HAL.\nThere's no expected impact to carriers.\n\nWhat you include in bug reports depends on which information you find relevant\nfor debugging, but generally more verbose is better.\n\nExamples and source\n-------------------\n\nThere's a default implementation of the (deprecated) 1.0 version of\nIDumpstateDevice that shows an example of using the dumpstate util library:\n`frameworks/native/cmds/dumpstate/DumpstateUtil.h`. There's also a Cuttlefish\nimplementation of the 1.1 HAL:\n`device/google/cuttlefish/guest/monitoring/dumpstate_ext/*`.\n\nThe source code is located here:\n\n- The HAL files are under [`hardware/interfaces/dumpstate/1.1/`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/dumpstate/1.1/).\n- The dumpstate native code that controls bug report contents is under [`frameworks/native/cmds/dumpstate/`](https://android.googlesource.com/platform/frameworks/native/+/refs/heads/android16-release/cmds/dumpstate/).\n\nImplementation\n--------------\n\nTo implement this HAL, implement the\n`android.hardware.dumpstate@1.1::IDumpstateDevice` HAL interface. There are many\npossible `DumpstateMode` values, but not all are likely to be supported by a\nsingle device (for example, WEAR for non-Wear OS devices).\n\nImplementing the dumpstate HAL is optional. All new devices launching with\nAndroid 11 MUST implement IDumpstateDevice 1.1 if they\nimplement the Dumpstate\nHAL. Devices that have already implemented IDumpstateDevice 1.0 prior to Android\n11 should be relatively easy to upgrade to 1.1, and\ndoing so is strongly recommended, as it greatly reduces the amount of extraneous\nprivate information included in bug reports.\n\nThis feature depends on the core dumpstate changes also included with Android\n11, located under `frameworks/native/cmds/dumpstate`.\n\nImplementing this HAL will likely require some SEPolicy changes to certain\nsystem properties, files, etc. to get things fully working, and will require\ncoordination with vendors to dump all relevant information into bug reports.\n\nCustomization\n-------------\n\nThe device user can toggle vendor logging on or off using developer settings.\nWhen it's turned off, `dumpstateBoard_1_1` may still output minimal essential\ninformation as determined by the OEM. Turning vendor logging off makes\n`IDumpstateDevice::dumpstateBoard` add only essential information to a bug\nreport, while turning it on includes whatever information the OEM chooses.\n\nYou can modify `dumpstate.cpp` (which calls the IDumpstateDevice HAL methods),\nfor example, to increase the timeout given for `dumpstateBoard` to complete.\nHowever, the core logic of `dumpstate.cpp` should remain unchanged.\n\nTimeouts can be any value, but they shouldn't dramatically increase the time\nthat a bug report takes to complete. In particular,\n`DumpstateMode::CONNECTIVITY` is highly time sensitive and needs to run as fast\nas possible to collect all relevant modem/Wi-Fi/networking logs.\n\nValidation\n----------\n\nThere's a VTS test for the IDumpstateDevice implementation, and there are\nfunctional unit tests for general `BugreportManager` functionality.\n\nThe recommended manual test case is\n`frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java`."]]