/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.tagpersist.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() 的結果。例如可執行檔名稱。