/system/software_defined_vehicle/samples 中的 SDV Core 服務程式碼範例可協助您開始建構服務。每個範例都包含 README 檔案,說明用途。
使用 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 記錄。
您可以在 Android.bp. 中使用 logtags 屬性定義 .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() 的結果。舉例來說,可執行檔名稱。