当前位置: 首页 > news >正文

AndroidAutomotive模块介绍(一)整体介绍

前言

Android Automotive 是一个基本 Android 平台,可运行 IVI 系统中预安装的 Android 应用以及可选的第二方和第三方 Android 应用。

本系列文档将会系统的介绍 Android Automotive 的功能、架构、逻辑等。模块逻辑将从 应用api接口、系统服务、底层服务,各层展开介绍。本篇文档将从整体的角度描述 Android Automotive,例如,定义、功能、架构等,后续将从各层展开详细描述。
下一篇:AndroidAutomotive模块介绍(二)应用及接口介绍

正文

1、介绍

1.1 定义

什么是 Android Automotive?

Android Automotive 是一个基本 Android 平台,可运行 IVI (In-Vehicle Infotainment)系统中预安装的 Android 应用以及可选的第二方和第三方 Android 应用。

Android Automotive 可为车载信息娱乐系统和车机提供开放性、自定义和规模化特性。开放性在免费的开源代码库中提供基本的车载信息娱乐功能,可进一步提升效率。借助自定义特性,实现人员能够在适当的情况下实现商品的差异化。规模化特性是通过 Android 的通用框架、语言和 API 来实现的,所有这些都使得全球数十万 Android 开发者的开发专长和成品软件得以重复使用。

1.2 发展

1.2.1 Android O 版本特性

Google 在 Android O 版本上新增了 Treble 化,对 Android 系统的框架进行了一次较大的改变,打算彻底解决 Android 系统碎片化的问题,让制造商以更低的成本、更轻松、更快速的将设备升级到新版的 Android 系统,Google 称这个架构为 Treble 架构。Android O 版本之前的系统架构中,Android Framework 与 Android Hal 是打包成一个 system.img 的,Framework 与 Hal 之间是紧耦合的,通过链接对应的硬件 so 库的方式建立功能交互,所以 Android Framework 的升级的同时也需要对 Android Hal 进行升级。

Android O 版本之前通信架构:
在这里插入图片描述

Android O 之后的版本,Android 更新了系统框架设计,成为 Treble 架构,架构将 Hal 层与 Framework 层分离,将 Android 系统层服务打包到 system.img 中,Android Hal 打包到 vendor.img 中。引入了 HIDL 的接口语言来处理 Framework 与 Hal 之间的通信。

Android O 版本之后的通信架构:
在这里插入图片描述

1.2.2 Android Automotive 发展

Android O 版本中推出了 Treble 架构的同时又推出了 Android Automotive 功能,该功能是专门为车载而设计的一个功能模块。同时也表示 Google 正式进军汽车车载领域。

Android Automotive 就是 Android 平台,在 Android 强大的功能基础上扩展了 Android 在车载上的功能,增加了对汽车特定要求、功能和技术的支持,成为一个一站式全栈车载信息娱乐平台。

Google 在多年前已经布局车载领域,2014 年推出了 Android Auto,专门为驾驶环境而设计的一个 APP。功能是将手机端的应用投屏到车机上,在有线或者无线连接的基础上,将手机端的应用、信息、界面显示到车机屏幕上,扩展车机的功能使用。

基于手机端的 Android Auto 方案,Google 将适合车载的功能集成在车载 Android 系统,推出了 Android Automotive,这样解决了需要有线或者无线连接的通信介质,这样开发的重点就在车机端,可以和车身信号进行交互,做到车机与各 ECU 件之间功能的完美融合,但是对于应用来说,车机端的应用还是依赖各厂商的定制,提供的原生应用比较少。

2、架构

2.1 原生架构图

这里引用一张原生的架构图,来看下 Android Automotive 架构:
在这里插入图片描述

从上面的原生架构图中,我们可以发现,Google 把 Android Automotive 分为 System Apps、Android Framewrok API、Android System Servies、Vehicle Hal 四层功能。

  • System Apps:车载上层的应用软件,主要用于实现人机交互功能,包括空调显示、车辆健康、泊车辅助等。
  • Android Framework API:提供给上层应用的车辆 API 接口。
  • Android System Services:系统中与车相关的服务,可以统称为 CarService,由很多个子 Service 组成,包括 CarHavcService、CarSensorService 等。
  • Vehicle Hal:用于定义 OEM 可以实现的车辆属性的接口。Android Automotive 的硬件抽象层 (HAL) 为 Android 框架提供了一致的接口。系统集成商可以将特定于功能的平台 HAL 接口(如 HVAC)与特定于技术的网络接口(如 CAN 总线)连接,以实现车载 HAL 模块。典型的实现可能包括运行专有实时操作系统 (RTOS) 的专用微控制器单元 (MCU),该微控制器单元用于 CAN 总线访问或类似操作,可通过串行链路连接到运行 Android Automotive 的 CPU。除了专用 MCU,还可以将总线访问作为虚拟 CPU 来实现。只要实现符合车载 HAL 的接口要求,每个合作伙伴都可以选择适合硬件的架构。

2.2 架构图

那么将原生架构图扩展开来,整体架构图如下所示:
在这里插入图片描述

上图中是 Android Automotive 的架构图,上层的 CarServiceApp 通过 CarServiceApi 接口调用到 Framework 服务中,中间通过 Aidl 通信方式交互。Framework CarService 服务通过 android.hardware.automotive.vehicle 库 Hidl 方式与 Vehicle Hal 层交互。Vehicle Hal 层下是与 OEM 厂商建立交互逻辑,实现方式多样。
在这里插入图片描述

上图在架构上对于 Car API 与 Car Service 展开子模块描述,Android Automotive 中 APP、Service 包含许多子模块,后续将会展开描述

2.3 架构简要描述

2.3.1 Car Service App

Car Service App 代码路径为:/android/packages/apps/Car。

路径下包含许多应用,Android Automotive 为系统定制了一些专门适用车载系统的应用,以代替传统的手机应用模块。
在这里插入图片描述

2.3.2 Car Service Api

Car Service Api 代码路径为:/android/packages/services/Car/car-lib。

系统应用或者 OEM 三方应用通过 Car Service Api 调用 Car Service 功能。
在这里插入图片描述

2.3.3 Car Service

Car Service 代码路径为:/android/packages/services/Car。

系统框架层提供了多个模块,来对 Android Automotive 进行支持,最重要的有一个服务CarService (com.android.car)。

CarService 是一个类似 Android 系统中 SystemSever 的服务。它由一个服务启动,而里面又控制着数十个子模块服务。CarService 中 CarService 只作为服务的入口,具体的业务逻辑都在内部的子服务中处理。
在这里插入图片描述
在这里插入图片描述

2.3.4 Vehicle Hal

Vehicle Hal 代码路径为:/android/hardware/interfaces/automotive。

VehicleService是一个native服务,代码实现在目录 /android/hardware/interfaces/automotive/vehicle/2.0/default。

硬件抽象层主要是提供了一个native服务android.hardware.automotive.vehicle@2.0-service,负责处理车辆相关的业务。

3、总结

本篇文档中主要从整体的角度分析 Android Automotive,包括系统架构以及架构各层之间的交互,简要描述架构各层的功能及代码路径。后续将会对于各层功能展开描述。

下一篇:AndroidAutomotive模块介绍(二)应用及接口介绍

相关文章:

AndroidAutomotive模块介绍(一)整体介绍

前言 Android Automotive 是一个基本 Android 平台,可运行 IVI 系统中预安装的 Android 应用以及可选的第二方和第三方 Android 应用。 本系列文档将会系统的介绍 Android Automotive 的功能、架构、逻辑等。模块逻辑将从 应用api接口、系统服务、底层服务&#x…...

【开发问题记录】Nacos修改服务实例权重时报错

问题记录 一、问题描述1.1 产生原因1.2 产生问题 二、问题解决2.1 docker部署的nacos解决方案2.1.1 进入nacos容器2.1.2 查看当前目录2.1.3 进入data文件夹2.1.4 删除protocol文件2.2 本地部署的nacos 一、问题描述 1.1 产生原因 在运行项目时,在本地启动了一个服务…...

高级IO和5种IO模型

目录 1. 高级IO1.1 IO的基本概念1.2 OS如何得知外设当中有数据可读取1.3 OS如何处理从网卡中读取到的数据包1.4 IO的步骤 2. 五种IO模型2.1 利用钓鱼来理解2.2 阻塞IO2.3 非阻塞IO2.4 信号驱动IO2.5 IO多路转接2.6 异步IO 3. 高级IO的概念3.1 同步通信 VS 异步通信3.2 阻塞 VS …...

OpenHarmony轻量系统开发【7】驱动之I2C显示OLED屏幕

7.1实验效果 Hispark WiFi开发套件又提供一个oled屏幕,但是鸿蒙源码中没有这个屏幕的驱动,我们需要自己去移植。 以下是移植效果: 接口:I2C 使用引脚:HI_IO_NAME_GPIO_13 、 HI_IO_NAME_GPIO_14 7.2代码 这里我直…...

C#:循环中断

任务描述 实现九九乘法表,按照编程要求,使用break跳出循环 测试说明 测试过程: 平台将编译用户补全代码,并根据程序的输出判断程序是否正确。 以下是测试样例: 测试输入: 预期输出: we found…...

34. UE5 RPG实现鼠标点击移动

在前面,我们实现过使用键盘按键wasd去实现控制角色的移动,现在,我们实现了InputAction按键触发,后面,实现一下通过鼠标点击地面实现角色移动。 我们将实现两种效果的切换,如果你点击地面快速松开&#xff0…...

《二》Qt Creator工具介绍与使用

一、关于界面 点击文件--->新建文件或项目会出现如下图: 我们选择第一个 点击下一步下一步: 继续下一步直到结束: 二,具体文件介绍 我们点击pro查看以下 QT core gui第1行 表示使用qt的core和gui库,如果以后…...

20240415金融读报:市场信贷不能过于宽松声音碳领域新增文件

1、市场普遍认为,在经济转型背景下,当前的社会融资规模和信贷增长有助于经济高质量发展,过于宽松并不利于经济发展。(已经有这个声音了,是不是说明我们已经脱离了U型曲线的最低点,在或快接近其后半段的1/2处…...

2024年第十五届蓝桥杯研究生组题目总结(Java、Python、C++)

2024年十五届蓝桥杯研究生组 今年的题较去年难度降低了很多,题量也少了2道。 Q1 劲舞团 读文件,找到最长的满足条件的子数组的长度 答案是:9 BufferedReader,fopen,open Q2 召唤数学精灵 找规律,周期…...

MindOpt APL向量化建模语法的介绍与应用(2)

前言 在数据科学、工程优化和其他科学计算领域中,向量和矩阵的运算是核心组成部分。MAPL作为一种数学规划语言,为这些领域的专业人员提供了强大的工具,通过向量式和矩阵式变量声明以及丰富的内置数学运算支持,大大简化了数学建模…...

深入理解图形处理器(GPU):加速人工智能和大数据计算的引擎

文章目录 1. 什么是GPU?2. GPU的工作原理3. GPU的应用领域4. GPU与CPU的比较参考与推荐 前言: 图形处理器(GPU)不再仅仅是用于图形渲染的硬件设备。如今,GPU已经成为加速人工智能、大数据计算和科学研究的关键引擎。本…...

【Java探索之旅】数组使用 初探JVM内存布局

🎥 屿小夏 : 个人主页 🔥个人专栏 : Java编程秘籍 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一、数组的使用1.1 元素访问1.2 数组遍历 二、JVM的内存布局🌤️全篇总结 …...

RabbitMQ消息模型之Simple消息模型

simple消息模型 生产者 package com.example.demo02.mq.simple;import com.example.demo02.mq.util.ConnectionUtils; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection;import java.io.IOException;/*** author Allen* 4/10/2024 8:07 PM* versi…...

设计模式系列:简单工厂模式

作者持续关注 WPS二次开发专题系列,持续为大家带来更多有价值的WPS二次开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397) 目录 定义 特点 使用场景 优缺点 (1) 优点…...

解决 windows+Ubuntu 时间不同步问题

本文所使用的 Ubuntu 系统版本是 Ubuntu 22.04 ! 如果你的电脑装了 Windows Ubuntu 系统,肯定会遇到时间不同步的问题。那么如何解决呢?参考步骤如下: # 步骤一:进入到 Ubuntu 系统# 步骤二:执行如下三条命令即可 sud…...

Learn SRP 01

学习链接:Custom Render Pipeline (catlikecoding.com) 使用Unity版本:Unity 2022.3.5f1 1.A new Render Pipeline 1.1Project Setup 创建一个默认的3D项目,项目打开后可以到默认的包管理器删掉所有不需要的包,我们只使用Unit…...

NL2SQL进阶系列(4):ConvAI、DIN-SQL、C3-浙大、DAIL-SQL-阿里等16个业界开源应用实践详解[Text2SQL]

NL2SQL进阶系列(4):ConvAI、DIN-SQL等16个业界开源应用实践详解[Text2SQL] NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL] NL2SQL基础系列(2)&#xff1a…...

Python统计分析库之statsmodels使用详解

概要 Python statsmodels是一个强大的统计分析库,提供了丰富的统计模型和数据处理功能,可用于数据分析、预测建模等多个领域。本文将介绍statsmodels库的安装、特性、基本功能、高级功能、实际应用场景等方面。 安装 安装statsmodels库非常简单,可以使用pip命令进行安装:…...

A Learning-Based Approach for IP Geolocation(2010年)

下载地址:Towards IP geolocation using delay and topology measurements | Proceedings of the 6th ACM SIGCOMM conference on Internet measurement 被引次数:185 Eriksson B, Barford P, Sommers J, et al. A learning-based approach for IP geolocation[C]//Passive …...

高创新 | [24年新算法]NRBO-XGBoost回归+交叉验证基于牛顿拉夫逊优化算法-XGBoost多变量回归预测

高创新 | [24年新算法]NRBO-XGBoost回归交叉验证基于牛顿拉夫逊优化算法-XGBoost多变量回归预测 目录 高创新 | [24年新算法]NRBO-XGBoost回归交叉验证基于牛顿拉夫逊优化算法-XGBoost多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现 [24年新算…...

Web APP设计:将多个相近的机器学习模型融合到一个Web APP中

将多个相近的机器学习模型融合到一个Web APP中 FUSE-ML是一个用于预测腰椎融合术后效果的APP,它可以做出三个不同的结论,分别评价术后的腰痛、腿痛和日常功能是否提高。 这估计是部署了三个机器学习模型在这个APP中,因为一个机器学习模型仅…...

网络爬虫:定义、应用及法律道德考量

网络爬虫技术在当今数据驱动的世界中发挥着重要作用。本文将从网络爬虫的定义和主要功能,其在业界的应用实例,以及涉及的法律和道德问题三个方面进行深入探讨。 1. 爬虫的定义和主要功能 网络爬虫,也称为网页爬虫或蜘蛛,是一种…...

(三)ffmpeg 解码流程以及函数介绍

一、视频解码流程 二、函数介绍 1.avformat_network_init 函数作用: 执行网络库的全局初始化。这是可选的,不再推荐。 此函数仅用于解决旧GnuTLS或OpenSSL库的线程安全问题。如果libavformat链接到这些库的较新版本,或者不使用它们&#…...

go work模块与go mod包管理是的注意事项

如下图所示目录结构 cmd中是服务的包,显然auth,dbtables,pkg都是为cmd服务的。 首先需要需要将auth,dbtables,pkg定义到go.work中,如下: 在这样在各个单独的go mod管理的模块就可以互相调用了。一般情况下这些都是IDE自动进行的,…...

华为OD-C卷-最长子字符串的长度(一)[100分]

题目描述 给你一个字符串 s,首尾相连成一个环形,请你在环中找出 o 字符出现了偶数次最长子字符串的长度。 输入描述 输入是一个小写字母组成的字符串 输出描述 输出是一个整数 备注 1 ≤ s.length ≤ 500000s 只包含小写英文字母用例1 输入 alolobo输出 6说明 最长子字…...

实战小项目 | ESP32-S3和ESP32-C3通过ESP-Mesh-Lite组网 温湿度传感器案例

传统Wi-Fi网络所有终端设备都需要直接与路由器相连,这使得Wi-Fi的覆盖区域受到路由器位置的限制,可接入终端设备的数量也受到路由器容量的限制。而乐鑫ESP-Mesh-Lite Wi-Fi组网方案,所有终端设备都可以与相邻设备连接,摆脱了对路由…...

SiLM5350系列带米勒钳位的单通道隔离驱动器 助力汽车与工业应用实现稳定与高效的解决方案

带米勒钳位的隔离驱动SiLM5350系列 单通道 30V,10A 带米勒钳位的隔离驱动 具有驱动电流更大、传输延时更低、抗干扰能力更强、封装体积更小等优势, 为提高电源转换效率、安全性和可靠性提供理想之选。 SiLM5350系列产品描述: SiLM5350系列是单通道隔离驱…...

c#中怎么自动下载软件

以下是一个简单的 C# 示例,演示如何使用 WebClient 类下载软件: using System; using System.Net; class Program { static void Main(string[] args) { // 要下载的文件 URL string fileUrl "https://example.com/path/to/file"; // 本地保…...

Unity笔记之下拉刷新列表

这样的效果; 代码: using System; using System.Collections; using System.Collections.Generic; using Sirenix.OdinInspector; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public class ScrollRectUpdateView : Mon…...

防火墙操作!

当小编在Linux服务器上部署好程序以后,但是输入URL出现下述情况,原来是防火墙的原因!! 下面是一些防火墙操作! 为保证系统安全,服务器的防火墙不建议关闭!! 但是,我们可…...

哪个网站可以做代销/seo俱乐部

题意&#xff1a;奶牛Bessie在0~N时间段产奶。农夫约翰有M个时间段可以挤奶&#xff0c;时间段f,t内Bessie能挤到的牛奶量e。奶牛产奶后需要休息R小时才能继续下一次产奶&#xff0c;求Bessie最大的挤奶量。 详见代码 1 #include <stdio.h>2 #include <algorithm>3…...

品牌网站建设gs/线上营销怎么推广

现代人许多人一直对保险表示怀疑&#xff0c;除了知道要上国家的社会保险&#xff0c;对商业保险一直是不太相信&#xff0c;认为保险大多是骗人的。 下面就几个大的问题&#xff0c;对大家详解一下&#xff01; 保险&#xff0c;生的时候拿不了&#xff0c;死才有得拿&#xf…...

网站信息员队伍建设方案/百度推广的优势

[20161111]数据文件的第0块2.txt --如果数据文件的第0块是OS块信息&#xff0c;以前的测试如果rman做备份集都不会备份。 --如果这块损坏&#xff0c;里面讲问题不大&#xff0c;你甚至可以不修复&#xff0c;如果在线resize就ok了&#xff0c;当然重建控制文件就出现问题。 --…...

做网站的专业叫啥/百度seo搜索

手册内的相关段落及作用&#xff1a;example: # man catCAT(1) User Commands CAT(1)NAMEcat – concatenate files and print on the standard output 简要说明命令的名称和基本功能SYNOPSIS …...

帝国cms小说阅读网站模板/电商线上推广

3.7、线程属性1.线程属性函数有哪些2.线程函数介绍①pthread_attr_init②pthread_attr_destroy③pthread_attr_setdetachstate④pthread_attr_getdetachstate⑤pthread_attr_getstacksize3.一些线程属性函数的使用1.线程属性函数有哪些 使用命令 man pthread_attr_ <tab&g…...

织梦mip网站改造/推广计划方案

链表排序 Sort List &#xff3b;抄题&#xff3d;&#xff1a; &#xff3b;思维问题&#xff3d;&#xff1a; &#xff3b;一句话思路&#xff3d;&#xff1a; &#xff3b;输入量&#xff3d;&#xff1a;空&#xff1a; 正常情况&#xff1a;特大&#xff1a;特小&#…...