在几年前的时候,曾听过很多人说 Android 学习很简单,做个App就上手了,工作机会多,毕业后也比较容易找工作。这种观点可能是很多Android开发者最开始入行的原因之一。
在工作初期,工作主要是按照业务需求实现App页面的功能,按照设计师的设计稿实现页面的效果。
在实现的过程中,总是会被提如下的需求:
这个字能不能大点或者醒目点儿?
感觉颜色和设计稿有差别,能不能再调调?
怎么老是崩溃啊,行不行啊?
…
所以,工作过一、两年后你会发现,自己每天重复工作内容就是将找各种各样的组件、框架,拖拖拽拽,改改样式。在极端情况下出现了问题后(比如部分机型上崩溃,加载图片慢),也不知道该如何解决!都不好意思说自己是搞技术的。
造成这种局面的有两种原因:
1.所开发的App功能要求并不复杂,在性能上呢,也不需要极致的追求;
2.自己的意识不够,不知道如何从平凡的工作中提炼可优化的点,在向上提升方面也没有完整的规划。
从自身规划的角度讲,技术上的进阶分如下几个阶段:
1.做好业务需求的功能。这个是初级程序员就应该有的能力。
2.解决极端情况下的技术问题,比如性能优化,OOM等。稍有点规模的公司,肯定都会遇到这种问题,比如上文中说的App在部分机型上崩溃、页面加载不出来等。只是大部分程序员会觉得难以复现,或者是因为小概率事件而忽略了。在忽略这些问题的过程中,也放弃了进一步提升的可能性。还有一部分程序员是看到了这些问题,但一直不知道怎么解决,因为这些问题的产生基本都是要往底层框架去找原因,而平时只关注上层的业务逻辑代码,因而没有深入研究底层的原理,导致心有余而力不足。
3.在开发框架和效率上做文章。举个例子,很多程序员说自己的精力都在和产品的撕逼中浪费了,但有没有想过,能够通过技术手段将自己从繁杂的无技术含量的工作中解救出来?比如是否能够做到只编写一次代码,或者改个配置参数就能够做到在不同平台上运行。更高的要求是,能否将这些方案做成通用框架或产品。
上面列举的几个阶段,首先要从思考方式上去逼迫自己不断地逼迫自己,不要偷懒。其次,要想按照上述阶段发展,还需要落在实处,在具体的技术体系中不断的学习。
学习哪些知识呢?
这里我推荐大家一个学习的参考路线,是我根据现在市场需求以及本身的技术薄弱区域所进行整理,大家可以进行参考学习。
内部调优
- 高效文件IO与网络IO
- 微信全面调优
- 内存与网络
- 贴近实战之问题优化
- 编程优化
高级音视频
- C/C++基础
- 交叉编译
- NDK进阶面试
- 增量更新与Gif渲染
- H264视频编码
- MediaCodec
- 视频编辑之剪影实战
- FFmpeg万能播放器
- 直播推流
- 图形渲染与识别
- Webrtc音视频
架构师必备
- 架构筑基技能
- 手淘组架构设计
- 开源架构手写实现
- 一线大厂架构核心进阶
鸿蒙系统
- Ability组件
- Ability组件
- 分布式任务
- 事件总线
- 鸿蒙线程
- 鸿蒙UI自定义控件
- 鸿蒙实战之新闻客户端
Kotlin技术
项目开发必备底层知识
- Android虚拟机内存原理
- Android10.0虚拟机源码分析
- 高级并发原理
- 线程实战
- 编译时高阶技术
- JDK高级动态代理
- 高级数据结构与算法
Android Q FrameWork源码与UI新技术
- 自定义控件进阶
- UI绘制与新技术
- AndroidR新技术
- Android Q下的FrameWork源码(SDK 29)
- 深入虚拟机源码
- 微信核心技术掌握
Gradle
- Groovy语言学习
- Gradle Android插件配置
- Apk优化之图片压缩(编译器自动将图片转换webp)
- Gradle自动化加密
- 手写Gradle实现自动化打包
小程序
以上都是现在Android高级开发需掌握的必备技能,在上面几个技术点中有音视频和华为的鸿蒙技术开发到时现目前比较热门的技能,音视频开发现在是市场人才比较缺少,所以导致音视频开发岗位的薪资基本都是在25K起步。
现在把音视频技术掌握好,这杯羹还是能喝的比较久。