コアコードサンプル

/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.tag
  • persist.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() の結果になります。たとえば、実行可能ファイル名。