1、Android Automotive 概述:什么是Android Automotive?它与Android Auto的区别。车载系统的前世今生。

各位同学,今天我们来聊聊车载系统里最绕不开的一个话题——Android Automotive。说实话,我第一次听到这个名字的时候,也以为它跟Android Auto是一回事。后来在项目里踩了坑,才明白这俩完全是两码事。嗯,咱们今天就把这事儿彻底掰扯清楚。

1.1 车载系统的“前世今生”

在讲Android Automotive之前,我觉得有必要先回顾一下车载系统的演变史。你想想看,十几年前的车机是什么样?

  • 第一阶段:纯硬件时代(2000年前后)
    那时候的车机就是个收音机+CD播放器。我印象特别深,我爸那辆老帕萨特,中控台上就一个单色液晶屏,显示个FM频率都费劲。说白了,这阶段根本谈不上“系统”,全是硬件逻辑。
  • 第二阶段:嵌入式RTOS(2005-2012年)
    后来出现了Windows Embedded、QNX、Linux这些轻量级系统。我记得2010年做第一个车载项目时,用的就是QNX。优点是稳定,缺点是开发效率低——改个UI要烧写固件,调试一次得半小时。
  • 第三阶段:智能手机映射(2013-2018年)
    Android Auto和Apple CarPlay出现了。它们本质上不是车载系统,而是把手机屏幕投射到车机上。我在2016年帮一家Tier1做过Android Auto的适配,当时最大的痛点就是:手机发热严重,而且必须插线。
  • 第四阶段:原生车载OS(2019年至今)
    Android Automotive、华为HarmonyOS、特斯拉的定制Linux开始崛起。它们直接跑在车机硬件上,不依赖手机。我个人认为,这才是车载系统的未来。

核心观点:Android Automotive不是Android Auto的升级版,而是一个完全独立、原生运行在汽车硬件上的操作系统。

1.2 什么是Android Automotive?

Android Automotive,说白了就是Google为汽车量身定制的Android系统。它去掉了手机相关的模块(比如电话、短信、移动网络),增加了车辆特有的API(比如空调控制、车窗、方向盘按键)。

我举个例子你就明白了:
你在手机上用Android,可以打电话、发微信、刷抖音。但在Android Automotive上,你只能用车载应用——比如导航、音乐、车辆设置。它没有电话应用,因为车机不需要SIM卡(当然,现在有些车支持eSIM,但那是另一回事)。

避坑指南:我曾经在项目里直接把手机版APK装到车机上,结果崩溃得一塌糊涂。后来才发现,Android Automotive的API level虽然跟手机版一样,但很多硬件抽象层(HAL)完全不同。比如摄像头,车机用的是环视摄像头,手机用的是后置摄像头,驱动模型天差地别。

1.3 Android Automotive vs Android Auto:一张表说清楚

对比维度 Android Automotive Android Auto
运行位置 车机硬件上原生运行 手机上运行,投射到车机
是否需要手机 不需要,独立系统 必须连接手机
应用生态 专为汽车设计的车载应用 手机应用的驾驶模式
系统更新 通过OTA升级车机系统 通过手机更新应用
硬件控制 可控制空调、车窗、座椅等 只能控制媒体和导航
典型代表 沃尔沃XC40 Recharge、Polestar 2 几乎所有支持Android Auto的车型

看到这个表,你应该明白了:Android Auto只是个“投屏工具”,而Android Automotive是“真正的车载操作系统”。我在做Polestar 2的项目时,第一次在车机上看到Google Maps直接显示充电桩信息,那种体验跟手机投射完全不是一个级别。

1.4 Android Automotive的核心架构

咱们来看一张图,这是我根据AOSP源码和实际项目经验整理的Android Automotive架构分层。

Android Automotive 系统架构 应用层 (System Apps + 3rd Party Apps) 车载桌面 · 导航 · 媒体 · 车辆设置 · 空调控制 应用框架层 (Java API Framework) Car API · Vehicle HAL · 窗口管理 · 输入管理 系统服务层 (System Services) CarService · AudioService · PowerService · 蓝牙服务 硬件抽象层 (HAL) Vehicle HAL · Audio HAL · Camera HAL · CAN总线接口 Linux内核 + 设备驱动

这张图里,最值得关注的是Vehicle HAL这一层。我在做车载空调控制时,就是通过Car API调用Vehicle HAL,最终通过CAN总线跟车身控制器通信。你想想看,手机Android哪有这些东西?

注意:Android Automotive的Vehicle HAL是Google专门为汽车定义的。它不像手机HAL那样可以随便改。如果你要适配一款新车,必须严格按照Google的VHAL规范来实现。我曾经见过一个团队自己魔改VHAL接口,结果CTS测试全挂,最后不得不重写。

1.5 为什么汽车厂商选择Android Automotive?

这个问题我经常被问到。其实原因很简单:生态。你想想看,如果每家车厂都自己搞一套系统,那应用开发者得适配多少平台?Android Automotive直接继承了Android的开发者生态,Google Play、Google Maps、Google Assistant开箱即用。

我记得2020年跟一家国内车厂交流时,他们还在纠结要不要用Android Automotive。后来他们算了一笔账:自研系统的应用生态建设成本,至少是Android Automotive的5倍。嗯,最终他们选择了后者。

1.6 本章小结

好了,咱们来捋一下今天的内容:

  • 车载系统经历了从纯硬件到智能OS的四个阶段
  • Android Automotive是原生车载系统,Android Auto只是手机投射
  • Android Automotive的核心是Vehicle HAL和Car API
  • 它最大的优势是继承了Android的生态

下一章,我会带大家深入Android Automotive的源码,看看CarService到底是怎么启动的。不过在那之前,我建议你先装个模拟器体验一下——Google官方提供了Automotive的模拟器镜像,跑起来就能看到车载桌面。

个人建议:如果你是第一次接触Android Automotive,别急着看代码。先花一天时间把模拟器里的所有应用点一遍,感受一下跟手机Android的区别。我当初就是这么干的,效果比直接读源码好得多。

公众号:蓝海资料掘金营,微信deep3321