做了很久的Android Car开发的工作,趁着最近不太忙,总结一下。本文内容基于Android R。
Android Automotive起始于Android N(也就是Android 7.x 版本。 2016年5月19日谷歌在美国加州的山景城举办了 Google I/O 开发者大会中发布。)。Android O开始,Google对Car有了更多的支持,为汽车制定了更多的应用。提出了HIDL架构。Android P开始,对框架做了进一步完善。Android Q开始,官方API文档正式支持Android Automotive Library。
Android Automotive的代码是AndroidN首次发布(2016年5月18日).
第一笔提交在2015-07-11 03:21:47
cc449f7941456a0133ff8a4b2e49737f0936c1d0代码库下载方法
repo sync -c packages/services/Car代码库配置文件
我认为主要有以下几点:
Android Automotive的优势:
Android Automotive的劣势:
Android Automotive 是一个基本 Android 平台,可运行 IVI 系统中预安装的 Android 应用以及可选的第二方和第三方 Android 应用。
Android Automotive 可为车载信息娱乐系统和车机提供开放性、自定义和规模化特性。开放性在免费的开源代码库中提供基本的车载信息娱乐功能,可进一步提升效率。借助自定义特性,实现人员能够在适当的情况下实现商品的差异化。规模化特性是通过 Android 的通用框架、语言和 API 来实现的,所有这些都使得全球数十万 Android 开发者的开发专长和成品软件得以重复使用。
了解 Android Automotive 与整个 Android 生态系统之间的关系至关重要:
两者的命名方式可能有点让人迷惑不解。下面介绍了它们之间的区别:
先来看Android的架构,Android将一个系统从上到下分为几层,依次是System Apps系统应用层,Java API Framework系统框架层,Native C/C++ Libraries本地共享库,Android Runtime系统运行库,Hardware Abstraction Layer硬件抽象层,Linux Kernel系统驱动层。
关于Android平台架构可以参考《Android Platform Architecture 安卓平台架构》
Android Automotive是一个涉及系统应用层,系统框架层,本地共享库和硬件抽象层的模块。Android Automotive的系统架构如下

Android Automotive 架构
Android Automotive为了区别于手机系统,重新设计了一些专门在汽车设备上显示的应用,包括桌面、空调、通知等。
桌面应用程序

空调应用程序

通知界面

| 缩写 | 全称 | 说明 |
|---|---|---|
| HAL | hardware abstraction layer | 硬件抽象层 |
| VHAL | Vehicle HAL | Android Automotive的硬件抽象层 |
| RTOS | Real Time Operating System | 实时操作系统 |
| OEM | Original Equipment Manufacturer | 原始设备制造商 |
| MCU | Motor Control Unit | 微控制器单元 |
| CAN | Controller Area Network | 制器域网 |
| IVI | In-Vehicle Infotainment | 车载信息娱乐 |
官方api文档: https://developer.android.google.cn/reference/android/car/Car?hl=en
官方Car指导: https://source.android.google.cn/docs/devices/automotive
Android Car开发指南:https://developer.android.google.cn/training/cars
Android 汽车应用介绍https://developer.android.google.cn/cars
附 Android主流版本、发布时间和对应的API level
| 版本名称Code name | 名称 | 版本 | 版本发布时间 | 对应API |
|---|---|---|---|---|
| (no code name) | 1 | 2008年9月23日 | API level 1 | |
| (no code name) | 1.1 | 2009年2月2日 | API level 2 | |
| Cupcake | 纸杯蛋糕 | 1.5 | 2009年4月17日 | API level 3,NDK 1 |
| Donut | 甜甜圈 | 1.6 | 2009年9月15日 | API level 4,NDK 2 |
| Eclair | 松饼 | 2.0.1 | 2009年12月3日 | API level 6 |
| Eclair | 松饼 | 2.1 | 2010年1月12日 | API level 7,NDK3 |
| Froyo | 冻酸奶 | 2.2.x | 2010年1月12日 | API level 8,NDK 4 |
| Gingerbread | 姜饼 | 2.3 | 2011年1月1日 | API level 9,NDK5 |
| Gingerbread | 姜饼 | 2.3.3 | 2011年9月2日 | API level 10 |
| Honeycomb | 蜂巢 | 3 | 2011年2月24日 | API level 11 |
| Honeycomb | 蜂巢 | 3.1 | 2011年5月10日 | API level 12,NDK 6 |
| Honeycomb | 蜂巢 | 3.2.x | 2011年7月15日 | API level 13 |
| Ice Cream Sandwich | 冰激凌三明治 | 4 | 2011年10月19日 | API level 14,NDK 7 |
| Ice Cream Sandwich | 冰激凌三明治 | 4.0.3 | 2012年2月6日 | API level 15,NDK 8 |
| Jelly Bean | 果冻豆 | 4.1 | 2012年6月28日 | API level 16 |
| Jelly Bean | 果冻豆 | 4.1.1 | 2012年6月28日 | API level 16 |
| Jelly Bean | 果冻豆 | 4.2 | 2012年11月 | API level 17 |
| Jelly Bean | 果冻豆 | 4.3 | 2013年7月 | API level 18 |
| KitKat | 奇巧 | 4.4 | 2013年7月24日 | API level 19 |
| Kitkat Watch | 4.4W | 2014年6月 | API level 20 | |
| Lollipop(Android L) | 棒棒糖 | 5 | 2014年6月25日 | API level 21 |
| Lollipop(Android L) | 棒棒糖 | 5.1 | API level 22 | |
| Marshmallow(Android M) | 棉花糖 | 6 | 2015年5月28日 | API level 23 |
| Nougat(Android N) | 牛轧糖 | 7 | 2016年5月18日 | API level 24 |
| Nougat(Android N) | 牛轧糖 | 7.1 | 2016年12月 | API level 25 |
| Oreo(Android O) | 奥利奥 | 8 | 2017年8月22日 | API level 26 |
| Oreo(Android O) | 奥利奥 | 8.1 | 2017年12月5日 | API level 27 |
| Pie (Android P) | 派 | 9 | 2018年8月7日 | API level 28 |
| Q (Android Q) | 10 | 2019年9月4日 | API level 29 | |
| 11(Android R)(Red Velvet Cake) | 红丝绒蛋糕 | 11 | 2020年9月9日 | API level 30 |
| 12(Android S)(Snow Cone) | 刨冰 | 12 | 2021年5月19日 | API level 31 |
| 13(Android T)(Tiramisu) | 提拉米苏 | 13 | 2022年8月16日 | API level 32 |