架构
Automotive架构
上图是android automotive的简单架构图:
- 最上面的时car app,是一些车相关的应用,可以看作是在车上的预制应用。
- CarManager是app调用CarService的一个中间管理类,类似于WifiManager.
- CarService是具体的服务类,在自己独立的进程中,实现了AIDL,被应用通过CarManager调用。
- Vehicle HAL实现了HIDL服务
- 最下面的是车的各个ECU,可以通过can总线与这些ECU通信,例如仪表等。
Automotive与原有android的架构关系
从这幅图中我们可以看出,Android Automative是在原先Android的系统架构上增加了一些与车相关的(图中虚线框中绿色背景的)模块。
包括:
- Car App:包括OEM和第三方开发的App,例如CarHvacApp
目录:package/apps/Car - Car API:提供给汽车App特有的接口
目录:package/services/Car/car-lib - Car Service:系统中与车相关的服务
目录:package/services/Car - Vehicle Network Service:汽车的网络服务
- Vehicle HAL:汽车的硬件抽象层描述
package/services/Car代码目录
packages/services/Car下面有CarService,它是一个单独的app。
car-lib:包含了car api。
产品配置
Car App
/car_product/build/car.mk 这个文件中列出了汽车系统中专有的模块:
#Automotive specific packages
PRODUCT_PACKAGES += \
vehicle_monitor_service \
CarService \
CarTrustAgentService \
CarDialerApp \
CarRadioApp \
OverviewApp \
CarLensPickerApp \
LocalMediaPlayer \
CarMediaApp \
CarMessengerApp \
CarHvacApp \
CarMapsPlaceholder \
CarLatinIME \
CarUsbHandler \
android.car \
libvehiclemonitor-native \
这个列表中,首字母大写的模块基本上都是汽车系统中专有的App。这些App的源码位于/platform/packages/services/Car/或者/platform/packages/apps/Car/目录下。当然,OEM厂商可以添加更多的App。
CarService
Bp编译选项
LOCAL_PACKAGE_NAME := CarService
Androidmanifest文件:系统常驻进程
CarService类
参考
https://zhuanlan.zhihu.com/p/607874721