/system/software_defined_vehicle/samples 中的 SDV 核心服务代码示例可帮助您开始构建服务。每个示例都包含一个描述应用场景的 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 A/B 分区更新 |
system/software_defined_vehicle/samples/sdv_gateway |
通过 SDV 网关与 SDV 核心服务通信的原生和 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() 的结果。例如,可执行文件名称。