Android车载应用开发与分析(11)- 车载Android应用开发入门指南

1. 前言 – 移动互联网退潮下的汽车大战

将时间回退到2017年我大学刚毕业时,彼时移动互联网就已经开始退潮,各大个培训机构也纷纷停止了Android相关的培训,曾经热火朝天的应用开发从那时起,就开始走向下坡路,小程序以及众多跨平台框架也让市场对Android原生开发的需求逐年降低,市场需求的降低也造就了Android开发的面试变得史无前例的“卷”。

终于我在2019年选择离开了互联网,投身当时还不是非常火热的车载Android领域继续从事Android原生开发。而这一年中国首个外商独资的整车制造项目,“上海特斯拉超级工厂”开工了。

特斯拉在智能化和电子化上的巨大优势将智能汽车推向了一个全新的高度,先进的自动驾驶以及BMS电池管理系统,深深震撼了全世界的人,在当时的国人眼中特斯拉几乎就是新能源汽车的代名词,时至今日,Model Y和Model 3已也依然是新能源汽车领域的畅销车型。

众所周知汽车工业是发达国家重要的经济支柱,而中国是世界上最大汽车生产和销售国,特斯拉的热销立马就引发了一场 鲶鱼效应 ,国内外的汽车制造商纷纷开始布局智能化汽车,汽车工业走向了软件定义汽车的时代。软件定义汽车的核心思想是,决定未来汽车的是以人工智能为核心的软件技术,车载软件在汽车领域的重要性首次被拔高到了前所未有的高度,就这样一场轰轰烈烈的车载软件技术大战上演了。

2022.10.17 又更新了一篇,删减了部分内容,请参考:https://blog.csdn.net/linkwj/article/details/127398839

2. 智能汽车座舱基本结构

在从事车载Android应用开发前,必须要对汽车座舱的基本结构有一个大体的认知,只有意识到汽车座舱是一种与手机完全不同的架构,才能更好的助力我们日后学习车载Android应用的开发。下面就来介绍一个比较主流的车载操作系统架构。

注意:并不是所有的车载操作系统都采用了下面的架构,比如,特斯拉采用的是基于Linux一套架构。

Android车载应用开发与分析(11)- 车载Android应用开发入门指南

上面的application逻辑很简单,app启动5秒后,弹出一个全屏的Window的。

接下来在AndroidManifest.xml中注册application。

在上面源码中我们需要关注两个普通应用用不到的属性:

将与其他应用程序共享的 Linux 用户 ID 的名称。默认情况下,Android 会为每个应用分配自己唯一的用户 ID。但是,如果为两个或多个应用将此属性设置为相同的值,则它们将共享相同的 ID,前提是它们的证书集相同。具有相同用户 ID 的应用可以访问彼此的数据,如果需要,可以在同一进程中运行。
开发系统应用时,此项不是必须配置的。配置为后,该应用会变成system用户,可以访问一些system用户才能访问的空间。


配置应用程序是否应始终保持运行,默认为false。设为true之后,应用在开机广播发出之前就会自行启动,而且应用被杀死后,也会立即重启。
开发系统应用时,此项不是必须配置的。

3.3 测试系统应用

3.3.1 准备测试环境

测试系统应用就比较麻烦了,由于手边没有开发板,只能基于模拟器进行测试,所以就必须下载Android的源码,并使用Android源码环境编译出带有系统签名的APK。
下载、编译Android源码 请参考 :Android车载应用开发与分析(1) – Android Automotive概述与编译
完成Android源码编译后,我们将编写好的FirstCarApp部分源码拷贝到 /aosp/packages/apps/Car/ 下,
基于Android源码环境的app工程结构与基于Gradle的AndroidStudio工程结构是完全不一样的,目录结构如下:

Android车载应用开发与分析(11)- 车载Android应用开发入门指南

然后完整编译一次Android的源码

一般情况下我们可以直接使用emulator指令就可以启动编译好的模拟器,但是此时的模拟器的文件系统还是read-only模式,并且不可以执行remount指令,通过添加-writable-system -netdelay none -netspeed full,我们就可以正常使用remount指令了。

等模拟器重启后,我们继续编译出CarFristApp的apk。

然后使用adb指令在模拟器中创建一个CarFristApp目录,将编译好的apk push到system/priv-app/CarFristApp/目录下。

等待模拟器重启结束后,就可以看到,app会自行启动,然后会弹出一个WindowView遮住屏幕。不知道你是否注意到了,无论是自启动,还是弹出一个遮住屏幕的Window,都没有申请权限的窗口显示出来,这就系统级应用的一个重要特点。

Android车载应用开发与分析(11)- 车载Android应用开发入门指南

参考资料

智能座舱:智能化基础平台及架构(下)
2020年中国T-BOX行业现状分析,乘用车T-Box装配率迅速提升「图」
车载操作系统(三):智能座舱操作系统
首个专为先进智能驾舱打造的一体化HMI工具——Kanzi One重磅发布
Automotive | Android 开源项目 | Android Open Source Project
车载以太网-电子发烧友网

来源:林栩

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月18日
下一篇 2022年9月18日

相关推荐