Android车载系统Car模块架构链路分析

发布时间:2024年01月17日

一、模块主要成员

CarServiceHelperService?

SystemServer 中专门为 AAOS 设立的系统服务,用来管理车机的核心服务 CarService。该系统服务的具体实现在?CarServiceHelperServiceUpdatableImpl

CarService

Car模块核心服务APP,Android 13版本开始分为两个,一个是掌管 CarService 服务类的?builtin app,源码在:packages/services/Car/service-builtin/,一个是拥有具体实现和大量 Service 的?updatable app,源码在:packages/services/Car/service/

Car-lib(Car API)

Android 车机里提供给系统使用汽车相关功能的专用接口,源码在:packages/services/Car/car-lib/,它会编译到 android.car.jar 中,其中包括常用的 Car、CarPowerManager、CarSettings 等。

Car APPs

AAOS 专为汽车设计的系统app,目录在:packages/apps/Car/。例如面向 Car 的 SystemUI、Launcher、Settings等。

二、Car模块内部交互机制

下面用一张图以 CarInputService 和 CarpropertyService 演示说明:

?三、总结

Car 相关组件所属进程作用
CarServiceHelperServiceSystemServer管理 Car Serivce 的系统服务
CarServicebuiltin appCar 核心服务
updatable appCar 核心服务的具体实现
Car-libandroid.car.jarCar API SDK
Car AppsLauncher 等Car 专门设计的一系列 App
  1. SystemServer 进程在系统启动的时候发现 OS 具备?Automotive?的 feature,则启动 CarServiceHelperService 系统服务,并交由 CarServiceHelperServiceUpdatableImpl 实际负责和 CarService 的绑定
  2. CarService 的?builtin app?由父类 ServiceProxy 完成中转,即反射出?updatable app?中 CarServiceImpl 实例
  3. CarServiceImpl 的初始化将构建 ICarImpl 实例并构建内部的一堆具体服务 CarServiceBase,比如负责输入的 CarInputService 、负责车辆属性的 CarPropertyService 等
  4. 这些具体服务通过 HalServiceBase 和 VehicleHal 进行交互,比如调度输入事件的 InputHalService、读写/转换车辆属性的 PropertyHalService 等
  5. 后续的交给 VehicleHal 通过 HIDL 和 HAL 层交互
  6. 其他 Apps 可以通过?Car lib?提供的 Car?API 获取 CarService 中的服务接口即 ICarImpl
  7. ICarImpl 通过启动时候注册的服务名称和 CarServiceBase 实例对照表向 Apps 返回对应的接口实例,比如控制、监听输入的 CarInputManager、读写车辆属性的?CarPropertyManager
  8. 其他 Apps 拿到这些 Manager 接口之后,像 AOSP 中使用 ActivityManager 等接口一样通过 AIDL 和 CarService 进行交互
文章来源:https://blog.csdn.net/lzz214/article/details/135631976
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。