CarService
什么是CarService
CarService以一个apk的系统级应用形态,提供了一系列与车相关的一些列服务。上层应用通过CarService进行车辆信息展示和车身控制,为Android Automotive 系统的核心定制服务。
CarService与Vehicle HAL进行通信,进而通过车载总线(例如CAN总线)与车身进行通讯,为上层业务提供业务场景接口,完成对车身的控制与状态显示。
整体架构
📷 [图片: CarService 整体架构图 (diagram)]
CarService服务整体为典型的跨进程C/S架构,CarService服务首次由SystemServer进程启动。
汽车服务进程(CarService)
CarService 作为代理服务组件容器,负责服务聚合组件ICarImpl的生命周期。ICarImpl 依托于Vehicle HAL通信句柄提供的底层能力,组合分化出各种功能服务:
📷 [图片: ICarImpl 服务聚合组件架构图 (diagram)]
ICarImpl 会作为系统服务注册进服务发现管理器ServiceManager,同时也作为CarService组件对外提供的通信Binder。
应用进程
应用进程指的是使用CarService服务的客户端进程。
Car为服务的客户端,为应用侧提供了封装、整合的顶层API。主要由两大功能,一是负责与汽车服务进程的跨进程可靠性链接,二是负责维护服务于特定场景的各种manager,这些manager整合了来自于ICarImpl 的各种服务能力,使得业务侧能很方便的使用这些能力。
📷 [图片: 应用进程 Car 客户端架构图 (diagram)]
connection 负责与CarService建立ipc通道,可靠性上主要通过间隔一定时间重复尝试来提升链接成功率。
当下层硬件出现问题,导致Vehicle HAL Binder死亡,CarService进程会自杀等待系统重新拉起(persistent),客户端检测到链接断开,在没有自定义处理的情况下也会自杀。
📥 抓取自飞书 wiki 空间 7541192071952990209,obj_token: HaAWdPb7eoBAfYx2TkTceqQZnPb