车载应用必须遵循哪些 Google 的设计规范(如 HUD、语音交互)?

解读

面试官问的是“必须遵循”,说明他想听的是“硬规则”而非“最佳实践”。国内车载项目分两条线:

  1. 出海车型带 GMS,必须过 Google 的“Android Automotive OS”认证,此时 Google 的设计规范是强制门槛;
  2. 国内车型不带 GMS,走 AOSP+厂商定制,理论上可以“放飞”,但主流车厂(上汽、蔚来、理想、小鹏)在招标阶段就把 Google AAOS 规范写进验收条款,目的是以后出海复用同一套代码。
    因此,无论是否出海,回答时都把 Google 规范当“强制”来背,最稳妥。

知识点

  1. Android Automotive OS 专有规范
    • Car App Library 1.x/2.x:UI 模板强制使用(Tab、Grid、List、Sign-in、Settings 五类模板),禁止自定义 Fragment 与 Window。
    • DHU(Driver Head Unit)模拟器测试用例:必须 100% 通过,Google 在 GTS 里自动扫描。
  2. 驾驶安全分级(Driving Safety Label)
    • DISTRACTING、PASSENGER_ONLY、NO_DRIVER_REQUIRED 三档;任何交互元素必须静态声明,系统在行车时自动屏蔽 DISTRACTING 页面。
  3. HUD 与 Cluster 规范
    • 遵循 UXR-Auto-12 条款:字体 ≥ 32 sp、对比度 ≥ 4.5:1、禁止滚动列表、禁止视频。
    • 仅允许使用系统提供的 CarHardwareManager 把导航转向、来电、媒体信息投射到 Cluster,私有 SDK 无法直接写 HUD。
  4. 语音交互
    • 必须接入 Google Assistant for Automotive,声明 AutomotiveVoiceInteractionService;
    • 所有可语音触发的功能要在 res/xml/automotive_app_desc.xml 中静态注册,禁止运行时动态新增;
    • 唤醒词冲突检测:不得注册“Hey Google”以外长度 ≤ 3 音节的唤醒词。
  5. 权限与隐私
    • 访问车速、档位、油量等需声明 android.car.permission.CAR_INFO,属于 system|signature 级别,普通 APK 必须预装到 /system/priv-app 并通过 CTS Verifier 审核。
    • 摄像头与麦克风在行车时默认被 CarService 禁用,除非获得 ROLE_ASSISTANT 系统角色。
  6. 性能硬指标
    • 冷启动 ≤ 1.5 s(高通 8155 平台 60 Hz),帧率 ≥ 55 fps 连续 30 min;
    • 内存:前台进程 512 MB 内,后台 200 MB 内,超过即被 ActivityManager 杀掉。
  7. 国内落地差异
    • 由于无法使用 Google Assistant,车厂会要求同时接入百度度秘或讯飞,但 APK 包里仍必须保留 Google 的 automotive_voice_interaction_service 占位,否则 GTS 直接失败。
    • 国内渠道不上 Google Play,但 APK 仍需签名 V2+V3、zipalign 4 KB 对齐,方便以后出海直接复用。

答案

“车载应用如果面向 Android Automotive OS,必须遵循以下 Google 强制规范:
第一,UI 只能使用 Car App Library 提供的五种模板,禁止自定义窗口,且所有页面必须通过驾驶安全分级静态声明,行车时系统会自动屏蔽高干扰页面。
第二,语音交互必须实现 AutomotiveVoiceInteractionService,所有语音指令在 automotive_app_desc.xml 中静态注册,不得动态新增;同时禁止自定义短唤醒词,避免与 Hey Google 冲突。
第三,HUD 与仪表集群只能通过 CarHardwareManager API 写入导航、来电、媒体三类信息,字体不小于 32 sp,禁止滚动与视频,确保 4.5:1 对比度。
第四,访问车速、档位等车辆数据需申请 CAR_INFO 权限,APK 必须预装到 priv-app 并通过 CTS Verifier 审核。
第五,性能上冷启动 ≤ 1.5 s、连续 30 min 帧率 ≥ 55 fps,内存前台 ≤ 512 MB,后台 ≤ 200 MB。
以上五点在 GTS/VTS 测试里会被自动扫描,任何一项失败都无法获得 Google 认证,国内车厂也会把这份 checklist 写进验收标准,因此必须当作硬规范执行。”

拓展思考

  1. 如果项目同时面对国内与海外,如何一套代码兼容 Google Assistant 与百度度秘?
    答:在 automotive_voice_interaction_service 中实现多路分发,根据 Locale 与系统属性 ro.boot.googleclientid 是否存在,决定把语音请求路由到 Google 或第三方 SDK,保证 GTS 阶段仍能调用到 Google 的占位服务。
  2. 当车厂要求自定义动画与 3D 车模,与 Car App Library 的模板冲突怎么办?
    答:把炫酷页面做成 PASSENGER_ONLY 安全级别,并在停车状态下才允许跳转;行车时自动降级到合规模板,通过 ViewModel 保存状态,切换无感知。
  3. 未来 Google 在 Android 14 Automotive 引入“隐私沙盒”与“部分屏幕截图限制”,如何提前适配?
    答:在 gradle 中把 targetSdk 提前升到 34,打开新权限 android.permission.PROJECT_MEDIA 开关,使用 CarOccupantZoneManager 判断乘客屏与主驾屏,分别申请不同粒度的 MediaProjection,确保后续 OTA 不会被系统禁用。