10 - 落地路线图
本篇是全库的执行总纲:把 01~09 的结论收敛成分团队、分阶段、可度量、可排期的行动清单。配套 09 选型对比 阅读。
核心原则:座舱 App 团队 80% 自研+开源,20% 评估商业 SaaS;绝不采购 Vector/dSPACE 重型工具(那是整车电控团队的)。
1. 总览:三团队 × 三阶段矩阵
| 座舱 App(MiCarSettings) | 平台(VHAL/SOA/DDS) | 整车电控 | |
|---|---|---|---|
| P0 立刻(0 成本) | cmd car_service 按名字;应用层 mock;DDS Mock publisher;COVESA VSS;EnergyUtils 单测 | VTS 对齐;推动 micar dump 标准化 | (采购周期长,先立项) |
| P1 中期(开源主导) | Cuttlefish 离线底座;IVehicleControl 接口;car-test-lib;LogPropMonitor 升级;cantools 回放 | vsomeip 评估;Cuttlefish CI | Vector CANoe+vTESTstudio |
| P2 长期(战略) | Mi Car Signal Broker;Repository+Hilt;GRPCVehicleHardware | 云 SIL 平台 | dSPACE HIL + ETAS INCA |
2. 座舱 App 团队(MiCarSettings)行动卡
🟢 P0:立刻可做(0 成本,1-2 周)
| # | 动作 | 解决痛点 | 依据 |
|---|---|---|---|
| 1 | 团队 SOP 从 --mock_from_car 切到 cmd car_service <名字> 注入 | P1/P5 | 02 |
| 2 | 用起来项目已有的应用层异常 mock:settings put system mock_vehicle_property_env 4 + mock_vehicle_property_id(写进团队调试文档) | P6 | 01 §3 |
| 3 | 自写 DDS Mock publisher(复用 nddsjava.jar + DataWriter,~50 行 Kotlin,放 src/debug/) | P10 | 05 |
| 4 | 采纳 COVESA VSS 命名作为内部信号命名标准 | P1 根因 | 08 |
| 5 | 给 EnergyUtils(40+ 纯函数) 补 JVM 单测 + 加 Kover | P9 起步 | 07 Phase 0 |
🟡 P1:中期(开源主导,1-3 月)
| # | 动作 | 解决痛点 | 依据 |
|---|---|---|---|
| 6 | 手写 IVehicleControl 接口(<100 行),SettingsCarPropertyManager 加 @VisibleForTesting 构造参数,解锁信号逻辑单测 | P9 | 07 Phase 1 |
| 7 | 自建”小米定制 Cuttlefish”离线底座:从小米 VHAL AIDL 生成 vhalconfig/xiaomi.json(3791 prop)+ MiCarSettings 平台签名预装 | P7 | 04 §7 |
| 8 | 升级 LogPropMonitor.py 为带时间戳精确回放器;真车 candump -l 录制 + PC 回放 | P8 | 06/03 |
| 9 | 抄 AOSP car-test-lib(14 个 Java 文件)引入,FakeCar 覆盖 VHAL 链路单测 | P9 | 07 Phase 2 |
| 10 | 推动 micar vendor VHAL 把自定义 propId 注册进 HalPropertyDebugUtils(按名字注入覆盖 vendor prop) | P1 根治 | 02 §3 |
🔴 P2:长期战略(3-6 月+)
| # | 动作 | 解决痛点 | 依据 |
|---|---|---|---|
| 11 | 自研 “Mi Car Signal Broker”(参考 RemotiveLabs + VSS),统一现有 4 套零散工具(CarDemo/LogPropMonitor/vc_client_mock/dumpsys) | P7/P8 根治 | 08 §5 |
| 12 | 评估升级 Android 16 GRPCVehicleHardware——真机 VHAL 变代理,开发机 gRPC server 当信号源 | P7 根治 | 02 §7 |
| 13 | 新代码逐步引入 Repository 接口 + Hilt 构造注入(老代码保留),建立应用层 CI 回归 | P9 根治 | 07 |
| 14 | 接触评估 RemotiveLabs(商业 SaaS)或采购其架构方案做内部参考 | P7/P8 跃迁 | 08 §5 |
3. 平台团队(VHAL/SOA/DDS 中间件)行动卡
| 阶段 | 动作 |
|---|---|
| P0 | 自研 VHAL 测试套件对齐 AOSP VTS for Automotive;推动 micar vendor dump 标准化(支持 --help + 名字 + 16 进制双模式) |
| P1 | 评估 vsomeip + CommonAPI 作为 DDS 之外备选;接入 Cuttlefish 做云端 CI;与 RTI 探讨 HIL/SIL 集成 |
| P2 | 中心化部署 Cuttlefish 到内部机房(避免 GCE 跨境);引入 GRPCVehicleHardware 做信号源中心化 |
4. 整车电控团队采购清单(无可替代)
| # | 工具 | 用途 | 预算量级 |
|---|---|---|---|
| 1 | Vector CANoe + vTESTstudio | 总线分析/仿真/测试自动化 | 单套几十万 RMB |
| 2 | ETAS INCA | ECU 标定 | 需询价 |
| 3 | dSPACE SCALEXIO HIL(或国产恒润/北汇 PRAXLINK) | 实时 HIL 仿真 | 百万 RMB 级 |
| 4 | DaVinci Configurator + MICROSAR BSW(如用 AUTOSAR) | BSW 配置 | 百万级 |
| 5 | dSPACE AURELION(智驾)/ 51World(国产场景) | 传感器/场景仿真 | 千万级(智驾) |
⚠️ MiCarSettings 团队不在本清单范围——这些工具跨不到 Android Framework 层,对座舱 App 是误购。
5. 里程碑与度量
| 里程碑 | 度量指标 | 目标 |
|---|---|---|
| P0 完成 | 团队调试命令切换率;应用层 mock 使用率 | >80% 用 cmd car_service 按名字 |
| P1 完成 | settingsVehicleLib 单测覆盖率;离线 CF 可用 | 覆盖率 0→50%;CF 跑通核心页 |
| P2 完成 | CI 信号回归用例数;等车时间 | CI 每日回归;等车 天→秒 |
| 长期 | 业界成熟度层级 | L2-L3 → L4-L5(对标 Volvo) |
6. 关键风险与依赖
| 风险 | 影响 | 对策 |
|---|---|---|
| 3791 prop 定义表缺失 | Cuttlefish vhalconfig JSON 生成不出 | 必须从小米 VHAL 团队拿完整 prop 定义——最大依赖 |
| priv-app 私有 API 漂移 | CF 镜像需 cherry-pick 小米 car-builtin 补丁 | CF manifest 直接 fork 小米整车 manifest |
| AGP 7.2 约束 | JUnit5 instrumentation/Kover 设备覆盖不可用 | Phase 0-2 锁定 JVM 单测;升级 AGP 评估 |
| DDS Security 启用 | 开源 DDS 互通方案全失效 | 持续跟踪 /data/vendor/rtidds/SOASecurityEnable.cfg |
| arm-only native lib | CF 主力 x86_64 | 编译 arm64 CF(实验性)或临时砍除 |
| Hilt 全量改造 | 280+ 文件、回归风险 | 务实派:手写 IVehicleControl 接口 <100 行替代 |
7. 一页纸总结
现在就做(0 成本):
cmd car_service按名字注入 + 应用层mock_vehicle_property_env+ DDS Mock publisher + COVESA VSS +EnergyUtils单测。本季度(开源主导):
IVehicleControl接口解锁单测 + 小米定制 Cuttlefish 离线底座 + LogPropMonitor 升级回放 + car-test-lib。本年度(战略):Mi Car Signal Broker + Android 16 GRPCVehicleHardware + Repository+Hilt CI 回归。
绝不:座舱 App 团队采购 Vector/dSPACE(交给整车电控团队)。
目标:把小米从业界 L2-L3 推到 L4-L5(对标 Volvo/P3),等车时间从天级降到秒级,信号 UI 测试覆盖率提升一个量级。