这两年互联网领域逐渐沉淀下来,移动研发不复当年火热。
新人选手入门门槛变高、上手更难;而老鸟们也很难跟上行业的脚步,别说冲击高薪,就是不被裁员都不容易,Android行业可谓是人人迷茫了。
不过与其怨天尤人不如将注意力放在自身,我们的迷茫归根结底在于不知道该怎么提升!
我们不能准确判断自己处在那个阶段,技术水平如何,以及到下一阶段需要补充哪些内容…最重要的是,我们缺乏体系化知识的构建,以及适合自己的成长节奏,因此总是提升无门!
因此,这篇文章我将把工程师分成初级、中级、高级和资深四个阶段,分别对研发设计能力、工具使用、系统原理和架构等作出要求。
Android工程师入门到精深-完整版学习文档可扫描文末卡片获取!
初级
我对初级研发攻城狮的定义是掌握基础的android知识,能够独立完成一个功能。这个层级大部分人通过看一些资料书籍再经过项目练习很快可以达到。
需要的技能有:
掌握android 四大组件知识,深入了解相关生命周期;对于Application、Fragment、Intent也必须掌握。
掌握android 基本布局和控件的属性和使用,常用布局有LinearLayout\RelativeLayout\ConstraintLayout等,控件有TextView\ImageView\RecyclerView\ScrollView等。
对android的资源访问使用有基本了解,了解android针对不同国家、语言、屏幕、API的适配原理。
掌握android系统服务和工具类的使用,对网络访问和数据库操作有基本认知。
熟练掌握研发工具,如IDE、模拟器、网络代理、日志等。
中级
而到达中级就需要付出一些努力了,需要了解更多知识,可以仿照开源库去造轮子练习。中级工程师要能够熟练完成功能研发。需要的技能有:
熟悉SOLID基础设计原则,掌握23种设计模式。
对于研发语言特性java/kotlin有深入理解,如反射、动态代理、apt等。
对android架构有基础了解,对apk结构和打包原理有深入了解。
对于android各个版本特性有基本了解,如MD设计、权限管理、doze模式等。
熟练掌握各种研发调试工具,如git、gradle、mat、layout inspector等。
掌握Handler\AsyncTask原理,熟悉多线程开发。
对绘页面制原理有初步理解,能够实现一个复杂自定义控件。
能够熟练掌握开源库的使用,如图片库(Glide\Fresco)、网络库(Volley\okhttp\Retrofit)、工具(Dagger\RxJava\EventBus)等。
熟悉图片优化常用方法,避免编写内存泄漏的代码。
高级
如果到达中级,那么恭喜你已经可以应付大部分情况了。但要能更进一步,就需要深入理解android系统的运行原理,达到融会贯通,可以作为android端上的架构师。
- 掌握java高级特性,如JUC、线程池、NIO\BIO等;掌握jvm虚拟机知识,如内存模型、GC原理、类加载机制、线程模型等。
- 对android运行环境有深入理解,理解android沙盒机制,掌握AIDL原理及Binder通信原理,了解app和activity启动原理。
- 掌握热修复原理,各大厂商方案的优缺点。
- 对于android事件分发有深入理解,重点掌握触摸事件机制。
- 深入理解android绘制原理,理解VSYNC和surface机制和窗口原理。
- 深入理解android动画原理,包括补间动画和属性动画。
- 对于android安全机制有基本认知,理解android安全原理。
- 深入理解端上设计范式思想,如mvc\mvp\mvvm\clean-arch等。
- 理解架构演进,有良好的分层和拆分思路,掌握模块化、插件化、动态部署等。
- 对新技术敏感,理解掌握下一代架构dynamic feature等。
至此,android端研发你已经炉火纯青,能够面对各种情况,达到泰山崩于前而色不变的境界。如果还想继续前进,就需要突破技术栈,从更高架构层次考虑问题。
资深
而到了资深层次,技术栈已经不再是阻碍。能够从更高层面看待问题,理解整个系统的设计,作为系统架构师的角色存在。
理解微服务、SOA思想,对于后端开发有一定涉猎。
了解前端研发工具和思想,知道vue react等研发框架。
深入理解跨端技术,如phonegap、weex/RN flutter、小程序快应用等。
总结:
希望你能对照上面的知识图谱,彼此印证查缺补漏,不断在技术道路上前行,有什么疑问和建议欢迎一起探讨。
这里给大家分享一份Android开发全套进阶手册,有需要完整文档的可点击下方卡片意见获取!
Android开发进阶知识点
架构师筑基必备技能
目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。
知识要点:
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO
设计思想解读开源框架
随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。
所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。
知识要点:
1、热修复设计
2、插件化框架设计
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计
360°全方位性能调优
在不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。
另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。
1、设计思想与代码质量优化
2、程序性能优化
- 启动速度与执行效率优化
- 布局检测与优化
- 内存优化
- 耗电优化
- 网络传输与数据储存优化
- APK大小优化
3、开发效率优化
- 分布式版本控制系统Git
- 自动化构建系统Gradle
4、项目实战
- 启动速度
- 流畅度
- 抖音在APK包大小资源优化的实践
- 优酷响应式布局技术全解析
- 网络优化
- 手机淘宝双十一性能优化项目揭秘
- 高德APP全链路源码依赖分析
- 彻底干掉OOM的实战经验分享
- 微信Android终端内存优化实践
NDK模块开发(音视频系列)
1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习
Flutter学习进阶
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门 …
微信小程序开发
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战
Android相关源码解读
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
最后
由于篇幅原因,以上学习笔记无法全部罗列而出,需要完整学习笔记的伙伴可扫描下方卡片查看获取方式!
最后,希望这份学习笔记可以帮助大家进阶提升,也希望大家能够如愿以偿,实现事业目标,迎来人生新的开始!
![](https://i-blog.csdnimg.cn/blog_migrate/63261f7ef84859b1d809c1f4c990f916.png)