本文基于Android O源码。
主要介绍Android的CarService。
架构
Android Automative的整体架构如下图所示:
从这幅图中我们可以看出,Android Automative是在原先Android的系统架构上增加了一些与车相关的(图中中间部分)模块。
包括:
- Car App:包括原始设备制造商(OEM)和第三方开发的App。
- Car API:提供给汽车App特有的接口。包含 CarHvacManager 、 CarSensorManager 和CarVendorExtensionManager等 API。如需详细了解受支持的 API,请参阅 /platform/packages/services/Car/car-lib,是car相关的API集合,底层是由CarService实现。
- Car Service:系统中与车相关的服务。位于 /platform/packages/services/Car/service,CarService主要是基于CarProperty实现Vechile相关的一些策略。
- Vehicle Network Service:汽车的网络服务。通过内置安全机制控制车载 HAL。仅限访问系统组件(第三方应用等非系统组件需使用 Car API)。原始设备制造商 (OEM) 可以通过 vns_policy.xml 和 vendor_vns_policy.xml 控制访问权限。位于 /platform/packages/services/Car/vehicle_network_service/;要查看用于访问车辆网络的库,请参阅 /platform/packages/services/Car/libvehiclenetwork/。这部分代码在8.1中已经给谷歌删减了。
- Vehicle HAL:汽车的硬件抽象层描述。定义 OEM 可以实现的车辆属性的接口。包含属性元数据(例如,车辆属性是否为 int 以及允许使用哪些更改模式)。位于 hardware/libhardware/include/hardware/vehicle.h。要了解基本参考实现的相关信息,请参阅 hardware/libhardware/modules/vehicle/。
有关更多详情,请参阅车辆属性。
Car App
/car_product/build/car.mk 这个文件中列出了汽车系统中专有的模块:
# Automotive specific packages
PRODUCT_PACKAGES += \
vehicle_monitor_service \
CarService \
CarTrustAgentService \
CarDialerApp \
CarRadioApp \