前言
移动研发火热不停, 越来越多人开始学习 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 架构进阶学习导图及笔记免费分享给大家, 希望对想成为架构师的朋友有一定的参考和帮助.
(可以换成自己的缩略大纲, 别用全部在展开的)
对 Android 进阶, 架构方面感兴趣的朋友, 转发关注后加群 Android 架构设计 (185873940) 可免费获取学习资料!
关于以上的技术选型, 这都有整理好的资料包括高级技术大纲以及一套系统全面的 Android 进阶视频, 还有有各种大佬技术面试心得和资料免费分享, 欢迎大家踊跃关注, 免费领取资料.
总结
要想有机会, 首先你得从人群中冒出来, 要想冒出来, 你就必须做到与众不同, 要做到与众不同, 你就要做得更多! 成为技术大牛梦想虽然很美好, 但是要付出很多, 不管是 Do more 还是 Do better 还是 Do exercise, 都需要花费时间和精力, 这个过程中可能很苦逼, 也可能很枯燥, 这里我想特别强调一下: 前面我讲的都是一些方法论的东西, 但真正起决定作用的, 其实还是我们对技术的热情和兴趣!
如果你看到了这里, 觉得文章写得不错就给个赞呗? 如果你觉得那里值得改进的, 请给我留言. 一定会认真查询, 修正不足. 谢谢.
来源: http://www.jianshu.com/p/ea587bd3cfe5