车载设备界面 (UI) 工具包提供了一个界面开发框架,可用于确保汽车中运行的应用(Google 应用以及系统和供应商应用)实现以下目标:
-
信息娱乐界面/用户体验的自洽性。自洽性是用户根据与信息娱乐系统互动的经验来预测如何与同一系统进行互动的能力。
-
自定义。OEM 可以修改系统的外观和风格,以便以最佳方式将功能与车辆内饰和硬件进行整合。
如需详细了解车载设备界面库集成,请参阅以下文章:
- 将车载设备界面库集成到应用中
- 自定义应用
- 添加自定义字体
- 自定义车载设备界面偏好设置
- CarUiListItem
- 自定义 CarUiRecyclerView
- 排查运行时资源叠加层问题
- 版本说明
- 附录 A:使用 RRO
- 附录 B:自定义准则
车载设备界面库简介
车载设备界面库是一个静态链接库,提供了一组可用于实现以下各类应用的组件和资源:
- 系统和 OEM 应用 (Gerrit)
- Android Automotive (AAOS) 应用
此库可充当:
-
具有如下作用的 Customization API:
- 定义哪些资源可以自定义,包括颜色、尺寸和可绘制对象。
- 将资源视为能够保证向后兼容的 API。
- 作为 Android 9 和 Android 10 中提供的短期解决方案与目前正在开发的长期解决方案之间的兼容性层。
资源叠加层
Android 目前提供了多种应用自定义项的方式,无需对受影响的子系统和应用执行额外操作:
-
构建时叠加层。此自定义项将在 Android 系统映像构建时应用。在构建期间,系统中的所有应用都会从其
res
文件夹以及目标 Makefile 内定义的overlay
文件夹中接收资源。 -
动态运行时叠加层(动态 RRO)。此类特殊的 APK 仅包含用于指明它们将会影响哪个目标 APK 的资源和清单文件。动态 RRO 独立于系统映像进行编译和部署,并且可以开启和关闭。当系统对某一特定应用执行资源查找时,系统还会检查是否有针对该应用的任何 RRO,以及该 RRO 是否包含同名的资源。
-
静态运行时叠加层(静态 RRO)。此类 RRO 与动态 RRO 在结构上类似,它们始终处于开启状态,这意味着在没有执行完整的系统映像升级的情况下,它们无法卸载或更新。静态 RRO 可充当构建时叠加层和动态运行时叠加层的中间层。
除了界面组件之外,车载设备界面库还提供一种机制:使用一组静态 RRO 将资源(静态链接到每个应用)与 OEM 资源直接叠加。OEM 必须提供一个包含其资源叠加层和一系列目标应用的文件夹。在构建过程中,车载设备界面库基础架构会使用这些信息为每个目标应用生成一个静态 RRO。
在上图中:
-
绿色:由 OEM 提供的自定义项,是构建时叠加层资源和运行时叠加层资源的组合。
-
黄色:由车载设备界面库提供的支持,包括可叠加的资源、组件(Java 代码)和构建支持,用于生成必要的 RRO。
-
蓝色:可自定义的目标,包括使用车载设备界面库自定义界面元素的框架、系统应用、供应商应用和 GAS 应用。