1.Android系统启动流程

Android系统启动流程
上图中ActivityManagerService、SystemUI、Launcher流程都是在SystemServer中启动的,代码路径(platform/frameworks/base/services/java/com/android/server/SystemServer.java)
2.Car Service基本分析(官方文档:https://source.android.google.cn/devices/automotive?hl=zh-cn)
2.1Car系统中专有的app和服务,在(platform/packages/services/Car/car_product/build/car.mk)中定义

Car系统专有service和App
编好的app在系统中的安装路径:

app在系统中的路径

app在系统中的路径
3.空调应用分析

空调界面启动按键

空调界面
3.1应用分析
3.1.1入口寻找
从上图可以看出,空调界面的启动入口在SystemUI中,我们到SystemUI的res中寻找

空调界面启动图标

空调启动图标
根据car_ic_hvac找到应用这个图标的引用

空调图标的引用
找到这个布局xml引用的地方

控制空气页面
稍加分析,我们可以看出空调界面的启动是通过Intent;action=android.car.intent.action.TOGGLE_HVAC_CONTROLS的广播发送
在通过搜索可以看出,这个广播被(platform/packages/apps/Car/Hvac/src/com/android/car/hvac/HvacUiService.java)接收

空调界面启动广播
在platform/packages/apps/Car/Hvac应用中的HvacPanelController.java控制,界面是hvac_panel.xml
3.1.2分析乘客侧空调温度的调整过程

Android studio debug空调应用第一步

第二步

模拟器点击乘客侧空调+

在Android studio中打出如下log
经过分析,如下为调用service层的位置

platform/packages/apps/Car/Hvac/src/com/android/car/hvac/HvacController.java
继续走

platform/packages/services/Car/car-lib/src/android/car/hardware/hvac/CarHvacManager.java

platform/packages/services/Car/car-lib/src/android/car/hardware/property/CarPropertyManager.java

platform/packages/services/Car/service/src/com/android/car/CarPropertyService.java
CarPropertyService实现了ICarProperty.Stub,实现了跨进程的调用

把platform/device/generic/car/common/car.mk中的android.car.hvac.demo改成false,要不会走入LocalHvacPropertyService
重新make编译
debug com.android.car进程

增加com.android.car进程debug最后

在此后会进入到hal层
3.1.3 HAL层目录
platform/hardware/interfaces/automotive/vehicle/