code 小生, 一个专注 Android 领域的技术平台
公众号回复 Android 加入我的安卓技术群
作者: 大贝壳 seashell 链接: https://www.jianshu.com/p/261aa3c9b53c 声明: 本文已获大贝壳 seashell 授权发表, 转发等请联系原作者授权
前言
移动研发火热不停, 越来越多人开始学习 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 等. 6. 掌握 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, 小程序快应用等.
后记
希望你能对照上面的知识图谱, 彼此印证查缺补漏, 不断在技术道路上前行. 有什么疑问和建议欢迎一起探讨.
分享技术我是认真的
来源: https://juejin.im/entry/5c6928def265da2da955a55d