架构图
🗂️ 架构分层详解
1. 应用层 (Applications)
这是用户直接交互的层面,包含三类应用:
• 系统应用:AAOS 自带的默认应用,如启动器(Launcher)、车辆设置、空调控制、收音机等。汽车制造商(OEM)可以定制这些应用。
• 汽车专用应用:使用 Android Jetpack Car App Library 开发的第三方应用,这些应用遵循车载环境的特定设计规范,确保驾驶安全。
• 第三方应用:通过汽车版 Play 商店下载的常见 Android 应用(如音乐、播客、导航应用),但它们必须通过汽车兼容性测试。
2. Java API 框架 & 系统服务层
这是 Android 的核心,为应用提供 API。
• Car API:这是 AAOS 与标准 Android 最大的不同之处。它提供了一组用于和车辆硬件交互的专属 API,例如:
- `CarVehicleProperties`:访问车辆属性(车速、油耗、里程、车门状态等)。
- `CarHVAC`:控制空调和加热系统。
- `CarInfo`:获取车辆信息(VIN码、车型等)。
- `CarDiagnostic`:读取诊断信息。
• Car Service:系统中最重要的服务之一。它作为桥梁,连接着上层的应用和底层的车辆硬件。
- 应用调用 Car API 的请求会由 Car Service 处理。
- Car Service 通过 **Vehicle HAL** 与车辆总线通信。
- **Android 系统服务**:标准 Android 的服务,如音频管理(AudioManager)、电源管理(PowerManager)、图形显示(SurfaceFlinger)等,它们都经过了车载环境的适配和增强。
3. 硬件抽象层 (HAL - Hardware Abstraction Layer)
HAL 定义了标准接口,允许更高级别的系统服务无需关心底层硬件的具体实现。
- **车辆 HAL (VHAL)**:**AAOS 架构中最关键的一层**。它由 Google 定义,是 Car Service 与车辆网络(如 CAN总线)之间的**标准化接口**。
- **OEM 的责任**:汽车制造商(OEM)或其供应商**必须根据 VHAL 接口实现具体的驱动**,将车辆信号(如车速、车门开关)映射到 VHAL 定义的属性上。
- 这样,上层应用无需关心车辆是哪个品牌或使用哪种网络协议,只需通过统一的 Car API 即可访问车辆数据。
4. 底层系统层
Android Linux Kernel:AAOS 使用与手机类似的 Linux 内核,但包含了许多针对汽车的定制和优化,例如:
- 支持汽车特有的硬件(如 CAN 总线控制器、TPMS传感器)。
- 增强的电源管理,支持多种休眠和唤醒模式。
- 严格的安全性和权限控制。
- **引导程序、设备驱动等**:启动系统和与硬件交互的基础。
5. 硬件层
- **车辆网络**:如 **CAN**、**LIN**、**MOST**、** Automotive Ethernet** 等。车辆上的各种电子控制单元(ECU)通过这些网络进行通信。
- **汽车硬件**:**System-on-Chip (SoC)**(如高通、英特尔等提供的车规级芯片)、显示屏、麦克风阵列、扬声器、GPS接收器等。
⚠️ 重要注意事项
-
与 Android Auto 的区别:
- Android Auto 是一个“投影”系统。你的手机是主机,将应用界面“投射”到车机屏幕上。
- Android Automotive OS 是一个完整的、嵌入在汽车里的操作系统。车机本身就是一台运行 Android 的计算机,无需手机即可独立运行所有应用。
-
OEM 定制:虽然 AAOS 由 Google 提供基础框架,但汽车制造商(OEM)拥有极大的定制权,包括:
- 实现 VHAL。
- 定制系统应用(启动器、设置、空调控制等)的UI和功能。
- 定义自己的车辆属性和服务。
- 预装自己的应用或选择的第三方应用。
-
安全性:AAOS 继承了 Android 的安全模型(如权限控制、沙箱机制),并针对汽车环境进行了强化,确保对关键车辆功能的访问受到严格限制。