安卓开发在近几年的就业环境大家肯定都听说过,许多Android开发程序员都找不到自己满意的工作,于是纷纷另谋出路…
如今,随着Android汽车开发的兴起,很多Android开发者想转行做Android车载开发。然而,Android车载开发不是想做就能做的,因为车载开发工程师的门槛相对较高,但是令人眼睛一亮的是车载开发工程师的工资普遍偏高,这高昂的工资确实令许多Android开发程序员不得不心动。
前段时间,一位工作了3年的Android开发程序员私信了我,然后问了我一系列的问题,表达出他对未来的迷茫:
我是一个小城市的程序员,工作了三年,月薪只有9k,这倒没啥,由于在这家公司工作了这么久,自己的能力和职位都没提升,就感觉自己很容易被一些工资低的人代替掉,就莫名感觉到有一种危机感。于是就在网上了解到了Android车载开发工程师的岗位, 我在b站上看了很多关于车载的教学视频,感觉很杂乱,就想知道Android车载开发一个完整的知识体系,距离参加工作,需要学习多久?就很迷茫
我仔细看了一下他提出的问题,归纳总结无非就是:Android车载开发的完整知识体系是怎样的,怎么学?
我相信有这种疑惑的同学一定也不在少数,那么今天我就结合我的实际经验,来简单介绍一下,作为一名Android车载工程是,我们需要具备哪些知识,才能帮助我们更快地找到Android车载的工作。
自我介绍
在开讲之前,我先简单地做一下自我介绍:
我是北京理工大学毕业,学的是Android开发。16年毕业,15年10月找到的实习单位参加工作,中间跳槽了几家公司,其中有一家是担任Android车载应用开发工程师,目前和朋友开了一家教育机构已有5年有余。
平时喜欢逛逛github,看看掘金,有空就维护一下github上的开源项目,没空就写写文章,发发牢骚,是个再普通不过的屌丝程序猿。
说了我的这些经历,无非就是想告诉大家:我和大家一样都是从Android开发程序员开始,然后进阶学习走到现在,我能做到,大家也一定能做到。所以大家不必担心,只要你能够按照我的指导去做的话,你一定可以比我更加优秀!
Android车载工程师知识体系
USB通信
USB是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口技术。现在智能手机也加入了对于USB设备的支持。比如手机映射到车载中控屏上面就需要用到USB。
需要掌握的技能有:
- 通信协议
- Android配件协议AOA
- USB 结构及通信形式
- USB 四种通信方式
- libusb交叉编译与使用
串口通信
串口通信(Serial Communication), 是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。
需要掌握的技能只有:
- 通信原理
- 通信协议
CarFramework框架
Android Automotive扩展了Android 。在将Android打造为功能齐全的信息娱乐平台的过程中,我们添加了对汽车特定要求,功能和技术的支持。就像今天用于移动设备的Android一样,Android Automotive将是一个完整的汽车信息娱乐平台。
需要掌握的技能有:
- CarFramework框架解析
- AOSP源码编写/调试/烧机等
- CarFramework与Android Framework
CarLuncher
Launcher是安卓系统中的桌面启动器,安卓系统的桌面UI统称为Launcher。Launcher是安卓系统中的主要程序组件之一,安卓系统中如果没有Launcher就无法启动安卓桌面。
需要掌握的技能有:
- CarLuncher启动原理
- launcer桌面切换/图标拖拽/workspace滑动 /主题定制
- 系统应用定制
Automotive系统
在智能手机行业初兴起时,包括BAT在内许多传统互联网企业都曾布局手机产业,但是随着手机市场的基本定型,造车似乎又成了各大资本下一个追逐的方向。百度、小米先后宣布造车,阿里巴巴则与上汽集团共同投资创立了,面向汽车全行业提供智能汽车操作系统和智能网联汽车整体解决方案的斑马网络,一时间造车俨然成了资本市场的下一个风口。
而作为移动端操作系统的霸主 - Android,也以一种新的姿态高调侵入造车领域,就是 Android 车载信息娱乐系统 - Android Automotive。
需要掌握的技能有:
- Automotive 的架构原理
- 车载网络模
- …
SystemUI
SystemUI属于系统级的apk,位置在frameworks\base\packages\SystemUI,主要功能有:
- 状态栏信息显示,比如电池,wifi信号,3G/4G等
- icon显示 通知面板,比如系统消息,第三方应用消息
- 近期任务栏显示面板,比如长按近期任务快捷键,显示近期使用的应用
- …
需要掌握的知识有:
- 车机System UI启动流程
- 车机Notification创建
- LockScreen锁屏
- SystemUI的车机控制
车载蓝牙通信
蓝牙是一种工作在免费的ISM频段的短距离无线通信技术,在各种设备之间实现灵活、安全、低成本、低功耗的语音和数据通信。
需要掌握的知识有:
- 低功耗蓝牙与传统蓝牙
- 蓝牙广播,扫描与连接
- 蓝牙服务与安全问题
- MTU和连接参数
- 蓝牙调试技巧
以上就是车载开发需要掌握的知识体系。详细资料可查看Android进阶学习笔记,里面包含了除车载知识外,还有音视频开发,Flutter工程师等Android相关职位的知识点。点击链接 docs.qq.com/doc/DWHFqVHBMVEJPWUx1 货区。需要详细车载开发学习思维图可以加魏:Maniu966免费货区。
光知道了一个学习方向还是不够的。在学习的同时,我们还需要提高自己的动手能力。为什么这么说呢?
打个比方:
很多小白在入门某一项语言或者技术的时候,通常都是购买网课或者买一本入门书籍翻看,抄一抄视频或者书中的源码,就天真地以为自己已经彻底掌握了。他们殊不知,这些只是一些皮毛而已,当条件稍微发生一点变化的时候,他们就彻底懵逼,手足无措了。
那么怎样才能摆脱这样的困境呢?其实非常简单,多敲代码,多练习,多思考,熟能生巧嘛。
如何提高自己的动手能力
这里我还是推荐大家多到github或者gitee这种开源代码托管平台去找一些优秀的开源项目,这些项目很多都是历经了各种复杂业务考验的高价值项目,临摹他们的代码,可以极大地提升我们的技术水平和编码水平
那么一开始我是如何锻炼自己的编码能力的呢?我简单介绍一下,供大家参考:
1.首先去开源代码托管平台找一个合适的目标项目。
2.阅读项目的代码,初步了解项目的实现原理和架构。
3.自己创建一个新项目,然后按照自己的理解实现一个类似的项目如果你不 如果不理解,可以学习或复制目标项目的代码(目标项与参考答案相似)
4.最低要求是能够正常运行,实现目标项目的主要功能,更高的要求是有一些自己的优化点或特点。
5.最后总结一下你做过的项目好的话可以写个自述介绍或者原理分析。如果你能按照我上面说的来来回回写四五个项目,相信你的实践能力一定会有质的飞跃。
最后
在这里,我想给往车载开发转行的朋友们一点建议:很多时候,很多事情,并不像你想象中的那么简单,千万不要自认为简单而不愿意去做,很多东西只有你亲手去做了之后,才会发现事情并不像你最初想的那么简单。一定要多动手自己去实际才能有本质的提升。