/system/software_defined_vehicle/samples の SDV Core サービスのコードサンプルを使用すると、サービスの構築を開始できます。各サンプルには、ユースケースを説明する README ファイルが含まれています。
サンプル ディレクトリの概要
次の表に、system/software_defined_vehicle/samples のリファレンス サンプル ディレクトリと、対応するドキュメント ガイドを示します。
| サンプル ディレクトリ | 説明 | ドキュメント ガイド |
|---|---|---|
system/software_defined_vehicle/samples/quickstart |
Manager バンドルと Monitor バンドル間の VSIDL のパブリッシュ、サブスクリプション、RPC を示すエンドツーエンドの Rust サービス バンドルのサンプル。 |
クイック スタート: SDV サービス バンドルを作成して実行する |
system/software_defined_vehicle/samples/vsidl |
VSIDL カタログ、protobuf 定義、サービス バンドルの実装パターンを参照します。 | ビジネス ロジックを実装する |
system/software_defined_vehicle/samples/concal |
車両構成とキャリブレーション パラメータの読み取りと更新を行うクライアント サンプル。 | 構成と調整 |
system/software_defined_vehicle/samples/health |
ヘルス モニタリング対象のサービス バンドルとサービス品質(QoS)モニタリングのサンプル。 | Health monitoring |
system/software_defined_vehicle/samples/oem_partition_update_client |
sdv_oem_updater クレートを使用して /oem_ab パーティションの更新をトリガーしてロールバックするサンプル サービス。 |
OEM AB パーティションの更新 |
system/software_defined_vehicle/samples/sdv_gateway |
SDV ゲートウェイを介して SDV Core サービスと通信するネイティブおよび Java IVI サンプルアプリ(NativeSdvGatewayTestApp と SdvCarMonitorTestApp)。 |
IVI で SDV ゲートウェイを使用する |
system/software_defined_vehicle/samples/telemetry |
オンデバイス テレメトリー データソースとシミュレーターのサンプル。 | データソース |
Logging API を使用する
提供されている手順の詳細については、以下をご覧ください。
基本的なログのサンプル
logging.cpp は、main、system、radio の各バッファへの書き込みを示します。使用可能なログバッファの簡単な説明については、代替ログバッファを表示するをご覧ください。
ALOGI_IFなどの条件付きログなしでサンプルを実行するには、次のコマンドを実行します。logging_sdv_sampleサンプルを実行して、
ALOGI_IFなどの条件付きログを出力するには、次のコマンドを実行します。LOGIF=1 logging_sdv_sample
構造化ロギングのサンプル
サンプル ファイル: structured_logging.cpp
サンプルを実行して、
eventsログバッファにログを書き込むには:structured_logging_sdv_sample
event、security、stats のログバッファには、フリーテキストではなく構造化データが保持されます。
構造化データは、イベントリスト API を使用してログに記録されます。この API は、常に INFO 優先度と数値タグ ID を使用してログに記録されます。
.logtags ファイルは、Android.bp. の logtags 属性で定義できます。指定すると、logcat はこれを使用して、数値のタグ ID からタグ名を導出します。タグ名は、構造化ログのフィルタリングに使用できます。ファイル形式の詳細と説明については、logcat event.logtags ファイルのコメントをご覧ください。
ビルドプロセス中に、すべての logtags ファイルがマージされ、Android システム イメージの /system/etc/event-log-tags ファイルに配置されます。
時間ログ フィルタリングのサンプルをコンパイルする
サンプル ファイル: compile_time_log_filtering.cpp
このサンプルには、実行可能ファイルから一部のログを削除するように調整できるマクロが含まれています。詳しくは、ソースコードをご覧ください。
ログ フィルタリングのサンプル: log_filtering.cpp
サンプルを実行し、最小ログ優先度を
WARNに設定するには、次のようにします。LOGLEVEL=WARN log_filtering_sdv_sample
ログのフィルタリングはシステム プロパティの影響を受けます。
log.tag.<tag>persist.log.tag.<tag>
システム内のすべてのログの場合:
log.tagpersist.log.tag
選択したログレベルを選択するには、各値を V、D、I、W、E のいずれかに設定します。
有効なログレベルは、値が設定されている最初のシステム プロパティに設定されているレベルです。これは、__android_log_set_minimum_priority 呼び出しでアプリによって設定されたログレベルよりも低いか高い場合があります。どのプロパティも設定されていない場合、__android_log_set_minimum_priority で構成されたレベルが適用されます。
詳細については、ロギング システムの概要をご覧ください。
デフォルトのログタグを
example_tagに設定して、サンプルを実行します。LOGTAG=example_tag log_filtering_sdv_sample
このサンプルには、すべてのログ メッセージのログタグを設定するために使用できる、コメントアウトされた LOG_TAG マクロ定義も含まれています。この方法で設定されたタグは、実行時に __android_log_set_default_tag で設定されたタグをオーバーライドします。
LOG_TAG マクロが定義されておらず、アプリが __android_log_set_default_tag を呼び出さない場合、デフォルトのタグは getprogname() の結果になります。たとえば、実行可能ファイル名。