座舱车门知识库

基于 MiCarSettings 仓库(com.android.car.settings)+ JIRA MANNPROB-1838/1839 现场实战梳理 建库日期:2026-07-07 | 分支:dev

知识库范围

围绕座舱车门的一切:车门开关、门锁、尾门/前备箱、童锁、车窗锁、充电口盖/加油口盖、靠近解锁/离车锁、开门预警(DOW),以及「离车提醒弹窗」这个把车门状态可视化展示的关键场景。

一个重要的边界(必读)

车门相关的代码分布在两个模块,分清谁是谁是理解 JIRA 的前提:

模块包名进程本仓库有源码?角色
MiCarSettingscom.android.car.settingscar.settings✅ 全部车门设置页(用户主动操作车门)+ 离车提醒弹窗 DoorUnLockActivity
SceneServicecom.micar.scenecom.micar.scene (uid 10053)❌ aar 无源码信号触发器 UnlockDoorTrigger,监听车端信号拉起弹窗

JIRA 1838/1839 的现场:bugreport 显示弹窗由 com.micar.scene 进程触发,但 DoorUnLockActivity源码在本仓库micarLockSettings/.../activity/DoorUnLockActivity.java,173 行),JIRA 报告引用的行号与本仓库 1:1 对应。UnlockDoorTrigger(拉起弹窗的上游)在 scene aar,无源码。

文档导航

文档内容
01-车门业务代码全景.md门相关 Controller / Fragment / 信号定义入口 / 联动逻辑(代码地图)
02-车门信号与属性定义.mdDoor.STATE / LockFltRemdForAlive / 电动门状态等 propId 映射表
03-门开关业务流程图.md设置页主动开门 + 离车提醒弹窗两条主线的完整流程图
04-MANNPROB-1838-根因-弹窗弹两次.md离车提醒重复弹出(车端 3 次 v=1 + App 无 cooldown)
05-MANNPROB-1839-根因-车门闪烁全开.md首帧 XML 默认全开 + onCreate 不预读 Door.STATE
06-调试与mock复现指南.mdAIDL/HIDL mock 注入命令、平台差异、日志关键字

核心结论速记

  1. 车门设置页主力模块settingsPage/micarLockSettings/,几乎所有门相关 Controller 都在这里。
  2. 车门状态信号Door.STATE(propId 0x66403101,DOOR area,6 个区域:左前/右前/左后/右后/引擎盖/尾门)。
  3. 离车锁车失败信号Door.DOOR_NOT_CLOSED_LOCK_FAILED(propId 0x61403156,GLOBAL,1=LOCK_FAIL / 2=CANCEL),只读(access=READ),App 不能下发。
  4. 电动门是状态机Door.POWER_OPERATED_DOOR_MOVING_STATUS 有 6 态(CLOSED/OPENING/CLOSING/FULL_OPEN/STOP_NEXT_OPEN/STOP_NEXT_CLOSE),不是简单开/关。
  5. 两个 JIRA 同源:1838(弹两次)和 1839(车门闪烁)都发生在 DoorUnLockActivity 首帧初始化阶段,建议合修「弹窗首帧数据未就绪前不渲染内容」。
  6. 底层基础设施:所有车门读写都经过 SettingsCarPropertyManager,见 ../SettingsCarPropertyManager源码解析/

关键源码索引

路径
离车提醒弹窗settingsPage/micarLockSettings/.../activity/DoorUnLockActivity.java
车门开关控制settingsPage/micarLockSettings/.../vehicle/VehicleDoorToggleCtrlPreferenceController.java
童锁/车窗锁settingsPage/micarLockSettings/.../vehicle/VehicleLockToggleCtrlPreferenceController.java
电动尾门settingsPage/micarLockSettings/.../gate/ElectricTailGatePreferenceController.kt
电动前备箱settingsPage/micarLockSettings/.../gate/ElectricHeadGatePreferenceController.kt
锁车设置页settingsPage/micarLockSettings/.../vehicle/VehicleLockSettingsFragment.java
门信号集合settingsPage/micarLockSettings/.../DoorVehiclePropertysMap.java
锁信号集合settingsPage/micarLockSettings/.../LockVehiclePropertysMap.java
全量 propId 定义base/settingsBaseLib/.../vehicle/MiCarPropertyIds.java
信号读写入口base/settingsVehicleLib/.../vehicle/SettingsCarPropertyManager.kt