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/