核心程式碼範例

/system/software_defined_vehicle/samples 中的 SDV Core 服務程式碼範例可讓您開始建構服務。每個範例都包含說明用途的 README 檔案。

範例目錄總覽

下表列出 system/software_defined_vehicle/samples 中的參考範例目錄,以及對應的文件指南:

範例目錄 說明 說明文件指南
system/software_defined_vehicle/samples/quickstart 端對端 Rust 服務套件範例,示範 Manager 和 Monitor 套件之間的 VSIDL 發布、訂閱和 RPC。 快速入門:建立及執行 SDV 服務套裝組合
system/software_defined_vehicle/samples/vsidl 參考 VSIDL 目錄、protobuf 定義和服務套裝組合實作模式。 導入商業邏輯
system/software_defined_vehicle/samples/concal 用戶端範例,用於讀取及更新車輛設定和校正參數。 設定和校正
system/software_defined_vehicle/samples/health 健康狀態監控服務套件和服務品質 (QoS) 監控範例。 健康狀態監控
system/software_defined_vehicle/samples/oem_partition_update_client 使用 sdv_oem_updater crate 觸發及復原 /oem_ab 分區更新的範例服務。 OEM AB 分區更新
system/software_defined_vehicle/samples/sdv_gateway 原生和 Java IVI 範例應用程式 (NativeSdvGatewayTestApp 和 SdvCarMonitorTestApp),可透過 SDV Gateway 與 SDV Core 服務通訊。 在 IVI 上使用 SDV Gateway
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 記錄,且一律會以 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 設定的層級。

詳情請參閱「Logging 系統總覽」。

  • 執行範例,將預設記錄標記設為 example_tag:

    LOGTAG=example_tag log_filtering_sdv_sample
    

範例也包含註解排除的 LOG_TAG 巨集定義,可用來設定所有記錄訊息的記錄標記。以這種方式設定的標記會覆寫在執行階段使用 __android_log_set_default_tag 設定的標記。

如果未定義 LOG_TAG 巨集,且應用程式未呼叫 __android_log_set_default_tag,則預設標記為 getprogname() 的結果。例如可執行檔名稱。