04 · 功能差异与对抗验证
一、车型差异速查矩阵(核心)
| 功能 | MX11 | Kunlun<E4U3 | Kunlun≥E4U3 | 其他(Lemans/Modena) | 海外ECE | 海外非ECE |
|---|---|---|---|---|---|---|
| 电动门分组 | 配置126 | 配置126 | 配置126 | 配置126 | 配置126 | 配置126 |
| 童锁自定义(HyperTask) | ✗ | ✗(<26RC11)/✓(≥) | ✓(≥26RC11) | ✗ | ✗ | ✗ |
| 前备箱高度限值 | ✓(75=POWER_RELEASE_CINCH) | ✓ | ✓ | ✗ | ✗ | ✗ |
| 后备箱高度限值 | ✓(112) | ✓ | ✓ | ✗ | ✗ | ✗ |
| 加油口 | 增程才显示 | 增程 | 增程 | 增程 | 增程 | 增程 |
| 调光天幕 | 配置 | 配置 | 配置 | 配置 | 隐藏(lemans_ece) | 配置 |
| 迎宾灯效入口 | ✓ | ✓ | ✓ | ✓ | 隐藏(lemans_ece) | ✓ |
| 个性锁车音效 | ✓ | ✓ | ✓ | ✓ | 隐藏(海外) | 隐藏(海外) |
| 天窗遮阳帘(旧) | 配置 | E4U3前 | ✗ | 配置 | 配置 | 配置 |
| 后排遮阳帘(新) | 配置 | ✗ | E4U3起 | 配置 | 配置 | 配置 |
| 车顶帐篷入口(旧) | 112=LIFTER | E4U3前 | ✗ | 112=LIFTER | 同 | 同 |
| 升降车顶大组件(新) | 112=LIFTER | ✗ | E4U3起 | 112=LIFTER | 同 | 同 |
| 升降顶安全锁+密码 | 随帐篷 | 随帐篷 | 随大组件 | 同 | 同 | 同 |
| 锁车降悬架 | ✗ | ✗ | 配置+E4U3+ | ✗ | ✗ | ✗ |
关键差异点:
- Kunlun E4U3 是分水岭:旧「天窗遮阳帘+车顶帐篷入口」→ 新「后排遮阳帘+升降车顶大组件+锁车降悬架」
- MX11/Kunlun 才有电动前后备箱高度限值
- 增程式 才有加油口
- 海外 隐藏个性锁车音效(无 toybox);ECE 额外隐藏调光天幕+迎宾灯效入口
二、配置字编号速查
| 编号 | key | 控制 |
|---|---|---|
| 112 | micar_sun_roof/micar_power_operated_tailgate | 升降顶/天幕/电动尾门 |
| 126 | micar_opening_closing_door | 电动门(ELECTRIC_4_DOORS) |
| 132 | micar_config_digit | 数字钥匙(UWB) |
| 75 | micar_config_digitfront_hatch_cover | 前备箱类型(MANUAL_MECHANICAL/MANUAL_POWER/POWER_RELEASE_CINCH) |
| 146 | car_config_welcome_carpet_lamp | 迎宾毯 |
| — | car_config_power_door_handle | 门把手(POWER_DOOR_HANDLE_ENABLE) |
| — | EASY_ENTRY_FUNCTION_CONFIG | 便利进出/降悬架 |
三、getPreferenceKeyResIdsToRemove 14 条规则
1. 非增程 → 加油口整组
2. !isKunLun || <26RC11 → 童锁自定义
3. isOverseasRegion → 个性锁车音效
4. 调光天幕: ASM 全不支持→整组; 单不支持→单分区项; 双不支持→双分区项
5. 遮阳帘: !=ELECTRIC→两组全删; ELECTRIC但<E4U3→删后排; 否则→删天窗(旧)
6. 后备箱: 按配置112+车型+数字钥匙裁剪
7. 前备箱: 按配置75+车型+数字钥匙; MANUAL_POWER_RELEASE/POWER_RELEASE_CINCH 二选一
8. !isElectricDoorSupported → 电动门整组
9. isElectricDoor || DoorCinch==UNKNOW → 自动吸合(反直觉)
10. POWER_DOOR_HANDLE_ENABLE != getPowerHandleConfig → 门把手内翻
11. 吸合+把手都删 → 车门动作整组
12. !isSunRoofSupported || <E4U3 → 车顶帐篷整组(含安全锁/密码)
13. !isSunRoofSupported || >E4U3 → 升降车顶大组件
14. !isAutomaticSuspensionLowering || !>E4U3 → 锁车降悬架
12/13 互斥:E4U3 前显示车顶帐篷入口(旧),E4U3 后显示升降车顶大组件(新)。
四、CarConfigManager 5 方法
| 方法 | 配置字 | 控制 |
|---|---|---|
getPropulsionTypeConfig() | 动力类型 | !=EXTENDED_RANGE_ELECTRIC 隐藏加油口 |
isWindowASMConfigEnable() | DIMMING_ROOF/ELECTROCHROMIC | 调光天幕单分区 |
isWindowDualZoneASMConfigEnable() | FRONT_AND_REAR_ZONE_SMART_DIMMING | 双分区天幕+同步 |
getRoofSunShadeConfig() | SunroofSunshadeTypeCfg | ==ELECTRIC 显示遮阳帘 |
isAutomaticSuspensionLoweringEnable() | EASY_ENTRY_FUNCTION_CONFIG | 锁车降悬架 |
五、DeviceUtil / VehicleStageUtilsKt 判断
| 判断 | 用途 |
|---|---|
DeviceUtil.isKunLun() | 童锁自定义、车门水印、迎宾灯 widget、 |
DeviceUtil.isOverseasRegion() | 个性锁车音效、DoorUnLockActivity 状态栏 |
MiCarSettings.isMX11()/isKunLun() | 前后备用高度限值(需 MX11||Kunlun) |
isBeforeVehicleStage(26RC11) | 童锁自定义 |
isBeforeKunlunVehicleStage(E4U3) | 天窗遮阳帘(旧)/车顶帐篷入口(旧) |
isAfterKunlunVehicleStage(E4U3) | 升降车顶大组件(新)/锁车降悬架 |
License 未使用(与 Light 不同,Light 用 LicenseControlMgr 控转向灯)。功能可见性全靠车型+配置字+阶段+区域。
六、hiddenFeatures(2 处,lemans_ece)
| key | 含义 |
|---|---|
pk_lock_smart_sun_roof(调光天幕组) | 整组(透光度+同步) |
pk_settings_lock_suggestion_category(内链设置组) | 含迎宾灯效入口 |
机制:"lemans_ece".equals(hiddenFeatures) && MiCarSettings.isEce()(rom.build.region==ECE_REGION)。
七、不可用原因机制(lazy 拉取)
设计模式:点击 disabled 控件时才读 reason 信号,when 映射 Toast/Dialog。详见《02-信号梳理》第七节(13 个 reason 类)。
关键:盖板异常(HOOD_REAR_ADJUST_EXCEPTION)13 种、遮阳帘不可用 7 种、调光天幕 4 种、升降车顶 3 类原因信号。
八、对抗验证记录(Lock 模块发现)
| # | 常见误解 / 偏差 | 源码真相 |
|---|---|---|
| ① | 入口 Fragment 在 lock 包 | ✅ VehicleLockSettingsFragment + 3 核心 Controller 在 vehicle 包 |
| ② | 迎宾光毯/尾翼在 Lock XML | ✅ 定义在 Lock,被 Light 模块 XML 引用(跨模块复用) |
| ③ | 升降顶安全锁是车信号 | ✅ RoofSafetyLockController 用 Settings.Global(非车信号)+ MIS |
| ④ | DoorUnLockActivity 用户点击触发 | ✅ 由 Intent 拉起(外部系统,车门解锁失败时),独立于 Controller |
| ⑤ | 右栏 Controller 有逻辑 | ✅ 空壳(仅 TAG) |
| ⑥ | 两个 Toggle Controller 同类 | ✅ VehicleDoorToggleCtrl(4门电动动作) vs VehicleLockToggleCtrl(童锁+车窗锁状态) |
| ⑦ | 门吸逻辑:电动门才显示 | ❌ 反直觉:电动门支持或 UNKNOW 时反而隐藏(避免与电动门重复) |
| ⑧ | 调光天幕是滑杆 | ✅ Tab 两档(LEVEL1/LEVEL5),500ms 延时校验 |
| ⑨ | SUN_SHADE_CURRENT_POSN 是当前位置 | ❌ 命名陷阱,底层是 SUNSHADE_TARGET_POSITION(目标位置) |
| ⑩ | 遮阳帘行车不可调 | ✅ 无速度保护(行车可调),仅车顶帐篷有 P 挡保护 |
| ⑪ | COVER_STATE 是持续信号 | ✅ 回弹 1000ms(脉冲式控制) |
| ⑫ | 升降车顶信号少 | ✅ Body.POWER_LIFTING_ROOF 系列 18 个信号(之前未列出) |
| ⑬ | LockCtrl 是单一域 | ✅ 跨 6 真实域聚合(Door/Hvac/Window/Mirror/Body/Light) |
| ⑭ | 锁车折叠在 Lock UI | ✅ MIRROR_FOLD_WHEN_LOCK 在 LockCtrl 域,但 UI 在 VehicleBody 模块 |
| ⑮ | 校准一键完成 | ✅ 必须长按校准按钮(安全保护,防卡阻损坏) |
九、可信度
| 结论 | 可信度 |
|---|---|
| 11 Category XML、40+ Controller、继承层级图 | 🟢 代码结构 Agent |
| 3 Ctrl 域 + 底层直引 + POWER_LIFTING_ROOF 18 信号 + 枚举 | 🟢 信号梳理 Agent + 源码核对 |
| 5 类顶部覆盖物 + 校准流程 + 车顶密码 | 🟢 遮阳帘 Agent + 代码结构 Agent 互证 |
| 车型矩阵 + 14 裁剪规则 + 配置字 + 不可用原因 | 🟢 功能差异 Agent |
Lock 模块 4 个 Agent 全部成功,且与 VehicleBody/Light 的跨模块信号共享(MIRROR_FOLD_WHEN_LOCK、WelcomeCarpet)三方互证,可信度整体 🟢。