前言
众所周知今年互联网行业发展的并不愉快,导致互联网行业的就业形式不太理想,“开猿节流”的事情时有发生,于是不少Android开发萌生了转行做车载的想法。
什么是车机开发?
车机指的是安装在汽车里面的车载信息娱乐产品的简称,通俗点说就是我们在车内经常使用的收音机、音乐播放、地图导航、电话、ETC等多种服务功能。
Android车机app开发与普通app开发有什么区别?
开发形式基本与普通app无差异,具体看部门要求。
1、使用mk还是gradle?
2、使用framework.jar还是Android sdk
3、使用vim还是IDE?
车载操作系统
汽车操作系统是从传统汽车电子不断演变而来的,传统汽车电子产品可分为两类:
一类是汽车电子控制装置,通过直接向执行机构(如电子阀门、继电器开关、执行马达)发送指令,以控 制车辆关键部件(如发动机、变速箱、动力电池)协同工作,这类系统一般统称为电子控制单元(ECU);
另一类是车载电子设备,如仪表、娱乐音响、导航系统、HUD等,这类系统不直接参与汽车行驶的控制 决策,不会对车辆行驶性能和安全产生影响,通常统称为车载信息娱乐系统(IVI)。这也是Android程序员主要负责的领域。
车载应用需要掌握的技能
除了一般Android开发需要学习的基础内容外,一名优秀的车载应用工程师还需要掌握以下的技能
1)MVVM架构
虽然如今一些移动端应用已经开始尝试MVI架构,但是就像前面说得,车载应用对待新技术都会持观望态度,目前主流的车载应用还是采用基于Jetpack组件的MVVM架构。
2)构建系统级应用
由于多数车载应用都属于系统级应用,所以必须了解如何构建一个系统级应用。
有一本比较老的书《Android深度探索:系统应用源代码分析与ROM定制》可以看一看。
3)性能优化
应用的性能优化是个亘古不变的话题,掌握应用的各种性能优化方式,也是一个Android程序员必备的生存手段,汽车座舱的SOC性能比旗舰手机要差不少,如果优化好车载应用将是一个非常有挑战性的任务。
4)IPC通信
Android中最常用的跨进程通信手段是Binder,因为有大量的Service需要与应用进行交互,所以基于Binder的AIDL在车载应用开发中使用得非常广泛,学会使用AIDL也同样属于必备技能之一。
5)CAN仿真测试工具
CAN仿真测试工具包含了软件和硬件,在车载应用开发时我们需要借助这些工具来模拟发送CAN性能给到IVI来调试我们的应用,在实车调试阶段,也需要借助这些工具来捕获车辆的CAN信号来分析一些bug。常用的有CAN alyzer、CANoe、TS-Master等等,这些工具价格都极其昂贵,独自购买不现实,在车载应用开发务必把握学习和使用的机会。
6)系统应用源码
这一项是我认为最重要的,不少车载应用层项目都是反复定制各种SystemUI、Launcher、Settings等等,读懂Android系统应用源码对我们定制化开发这些应用有非常大的好处。
以上是一些我认为车载应用开发时需要掌握的技能,其他的一些诸如:adb调试指令、Linux操作系统的运用、AOSP源码编译也都需要额外学习,根据不同的需求,JNI、NDK等技术也有可能会用上。
车载应用开发者的未来
就目前而言,车载Android开发依然有着不错的前景,但还远没有达到曾经的移动互联网的热度。
为了帮助到大家更好进军车载, 可以分享给大家一份《Android车载操作系统开发揭秘》,帮助大家深入了解车载开发,学习并掌握车载开发所需要的技能。
1、系统的Android车载开发学习脑图
重点说下Android车载开发的自学路线,先上车载学习脑图:
一个结构清晰且完整的车载应用系统学习脑图能够帮助新手在学习车载的思路清晰,帮助自己学习的每一步都有个清晰的计划。
起码你得知道每个阶段要完成的目标是什么,什么时候掌握什么知识点,有哪些是暂时不需要的,特别是在没有完整的学习时间的情况下,在碎片化的学习时间里,有一个完整的学习目标才能保障自己的学习效率
2、好用的车载学习书籍
《Android车载操作系统开发揭秘》
这本书是一本针对所有层次的 Android 读者而作的车载入门书。
全书分七部分 :
【车载架构篇】【内核篇】【系统调试篇】【LMKD】【Android车载实战篇】【架构通信篇】
前半部分介绍国内主流车载操作系统的基本架构;
后半部分将理论付诸实践,讲解Android车载图像显示系统,构建Android Auto 即时通信应用,实际开发SOA 架构通信。并帮读者解决常见编程问题和困惑。本书适合对车载行业感兴趣的任何层次的读者阅读。
内容展示
车载架构篇
- 一、汽车软硬架构 - EEA/SOA
- 二、汽车操作系统
- 三、智能座舱
- 四、未来,也许智能家、智能车、智能手机、智能穿戴、科技一体化
- 五、从智能汽车畅想未来全生态
基础篇
- 1.Android Automotive OS 安卓车载操作系统白皮书
- 2.1Andorid Automotive 源码osp_coral_car 项目构建流程
- 2.2 Andorid Automotive 镜像刷写流程
- 2.3 Andorid Automotive 源码aosp_coral_car 项目构建及刷写错误集锦
- 2.4 Android Automotive OS 构建失败Debug 集锦(持续更新)
- 3.[Android Automotive]Android 工具和基础架构
- 4.[Android Automotive]车载音频
- 5.[Android Automotive]音频多区
- …
内核篇
- 1.Android 内核配置信息
系统调试篇
- 调试踩坑FAQ(编译)
- 1.‘Native registration unable to find cl
ass ‘com/android/internal/os/RuntimeInit‘; - 2.解决 Android Automotive OS 悬浮框或者
PointerLocation 无法正常显示的问题
LMKD
- 一、Android低内存查杀守护进程(Android12)
- 二、PSI压力失速信息
- 三、LMKD的设计原理
- 四、LMKD初始化
- 五、PSI监视器初始化及其工作原理
- 六、Vmpressuser监视器初始化及其工作原理
- 七、AMS与LMKD
- 八、通过填充内存触发lmkd查杀
- 九、lmkd进程查杀规则
- 十、lmkd进程查杀配置
- 十一、有问有答-FAQ
Android车载实战篇
- 1.Android车载图像显示系统
- 2.Android车载概念
- 3.开发汽车媒体应用
- 4.构建Android Auto即时通信应用
- 5.构建车载导航和地图注点应用
- 6.构建Android Automotive OS视频应用
- 7.测试Android车载应用
- 8.分发Android汽车应用
- 9.适用于汽车的GoodlePlay服务
- 10.Android Automotive OS的通知
SOA架构通信篇
- 一、前言
- 二、注册中心-ServiceRegistry
- 三、FDBus的分层服务发现策略
- 四、服务发现各级描述
- 五、服务发现的范围控制
- 六、关于FDBus