前言

移动研发火热不停,越来越多人开始学习android开发。但很多人感觉入门容易成长很难,对未来比较迷茫,不知道自己技能该怎么提升,到达下一阶段需要补充哪些内容。市面上也多是谈论知识图谱,缺少体系和成长节奏感,特此编写一份android研发进阶之路,希望能对大家有所帮助。

这篇文章里,我们只谈技术,不谈软技能。

在这里我把攻城狮分成初级、中级、高级和资深四个阶段,分别对研发设计能力、工具使用、系统原理和架构等作出要求。

初级

我对初级研发攻城狮的定义是掌握基础的android知识,能够独立完成一个功能。这个层级大部分人通过看一些资料书籍再经过项目练习很快可以达到。

需要的技能有:

  1. 掌握android 四大组件知识,深入了解相关生命周期;对于Application、Fragment、Intent也必须掌握。

  2. 掌握android 基本布局和控件的属性和使用,常用布局有LinearLayout\RelativeLayout\ConstraintLayout等,控件有TextView\ImageView\RecyclerView\ScrollView等。

  3. 对android的资源访问使用有基本了解,了解android针对不同国家、语言、屏幕、API的适配原理。

  4. 掌握android系统服务和工具类的使用,对网络访问和数据库操作有基本认知。

  5. 熟练掌握研发工具,如IDE、模拟器、网络代理、日志等。

中级

而到达中级就需要付出一些努力了,需要了解更多知识,可以仿照开源库去造轮子练习。中级工程师要能够熟练完成功能研发。需要的技能有:

  1. 熟悉SOLID基础设计原则,掌握23种设计模式。

  2. 对于研发语言特性java/kotlin有深入理解,如反射、动态代理、apt等。

  3. 对android架构有基础了解,对apk结构和打包原理有深入了解。

  4. 对于android各个版本特性有基本了解,如MD设计、权限管理、doze模式等。

  5. 熟练掌握各种研发调试工具,如git、gradle、mat、layout inspector等。

  6. 掌握Handler\AsyncTask原理,熟悉多线程开发。

  7. 对绘页面制原理有初步理解,能够实现一个复杂自定义控件。

  8. 能够熟练掌握开源库的使用,如图片库(Glide\Fresco)、网络库(Volley\okhttp\Retrofit)、工具(Dagger\RxJava\EventBus)等。

  9. 熟悉图片优化常用方法,避免编写内存泄漏的代码。

高级

如果到达中级,那么恭喜你已经可以应付大部分情况了。但要能更进一步,就需要深入理解android系统的运行原理,达到融会贯通,可以作为android端上的架构师。

  1. 掌握java高级特性,如JUC、线程池、NIO\BIO等;掌握jvm虚拟机知识,如内存模型、GC原理、类加载机制、线程模型等。

  2. 对android运行环境有深入理解,理解android沙盒机制,掌握AIDL原理及Binder通信原理,了解app和activity启动原理。

  3. 掌握热修复原理,各大厂商方案的优缺点。

  4. 对于android事件分发有深入理解,重点掌握触摸事件机制。

  5. 深入理解android绘制原理,理解VSYNC和surface机制和窗口原理。

  6. 深入理解android动画原理,包括补间动画和属性动画。

  7. 对于android安全机制有基本认知,理解android安全原理。

  8. 深入理解端上设计范式思想,如mvc\mvp\mvvm\clean-arch等。

  9. 理解架构演进,有良好的分层和拆分思路,掌握模块化、插件化、动态部署等。

  10. 对新技术敏感,理解掌握下一代架构dynamic feature等。

至此,android端研发你已经炉火纯青,能够面对各种情况,达到泰山崩于前而色不变的境界。如果还想继续前进,就需要突破技术栈,从更高架构层次考虑问题。

资深

而到了资深层次,技术栈已经不再是阻碍。能够从更高层面看待问题,理解整个系统的设计,作为系统架构师的角色存在。

  1. 理解微服务、SOA思想,对于后端开发有一定涉猎。

  2. 了解前端研发工具和思想,知道vue react等研发框架。

  3. 深入理解跨端技术,如phonegap、weex/RN flutter、小程序快应用等。

后记

希望你能对照上面的知识图谱,彼此印证查缺补漏,不断在技术道路上前行。有什么疑问和建议欢迎一起探讨。

Android研发技术的进阶之路的更多相关文章

  1. Android程序员的进阶之路

    本文主要论述的是Android程序员的进阶之路,博主本人就是一名android开发攻城狮,所以这里讲述的大多数是android开发攻城狮的技术进阶之路,如有问题请多指正. 大家都知道程序员之中有有菜鸟 ...

  2. Android研发进阶之路

    前言 移动研发火热不停,越来越多人开始学习android开发.但很多人感觉入门容易成长很难,对未来比较迷茫,不知道自己技能该怎么提升,到达下一阶段需要补充哪些内容.市面上也多是谈论知识图谱,缺少体系和 ...

  3. 浅谈Android进阶之路

    过去十年是移动互联网蓬勃发展的黄金期,相信每个人也都享受到了移动互联网红利,在此期间,移动互联网经历了曙光期.成长期.成熟期.现在来说已经进入饱和期.依然记得在 2010-2013 年期间,从事移动开 ...

  4. Scala进阶之路-反射(reflect)技术详解

    Scala进阶之路-反射(reflect)技术详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Scala中的反射技术和Java反射用法类似,我这里就不一一介绍反射是啥了,如果对 ...

  5. [总]Android高级进阶之路

    个人Android高级进阶之路,目前按照这个目录执行,执行完毕再做扩展!!!!! 一.View的绘制 1)setContentView()的源码分析 2)SnackBar的源码分析 3)利用decor ...

  6. Android进阶之路(2)-详解MVP

    ### MVP简介 >MVP 全称:Model-View-Presenter :MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的[地方](https://baike.baidu.co ...

  7. 2017PHP程序员的进阶之路

    2017PHP程序员的进阶之路 又是一年毕业季,可能会有好多毕业生即将进入开发这个圈子,踏上码农这个不归路.根据这些年在开发圈子总结的LNMP程序猿发展轨迹,结合个人经验体会,总结出很多程序员对未来的 ...

  8. 【转】2017PHP程序员的进阶之路

    2017PHP程序员的进阶之路 又是一年毕业季,可能会有好多毕业生即将进入开发这个圈子,踏上码农这个不归路.根据这些年在开发圈子总结的LNMP程序猿发展轨迹,结合个人经验体会,总结出很多程序员对未来的 ...

  9. 一个Android 架构师的成长之路

    前言 总所周知,当下流行的编程语言有Java.PHP.C.C++.Python.Go等.其中,稳坐榜首的仍然是Java编程语言,且在以面向对象思想占主导的应用开发中,Java往往成为其代名词.Java ...

随机推荐

  1. C# byte数组与16进制间的相互转换

      1.byte数组转16进制字符串 /// <summary> /// 将一个byte数组转换成16进制字符串 /// </summary> /// <param na ...

  2. elasticsearch容量规划

    https://docs.bonsai.io/article/123-capacity-planning Capacity Planning Capacity planning is the proc ...

  3. selenium爬虫入门(selenium+Java+chrome)

    selenium是一个开源的测试化框架,可以直接在浏览器中运行,就像用户直接操作浏览器一样,十分方便.它支持主流的浏览器:chrome,Firefox,IE等,同时它可以使用Java,python,J ...

  4. [记录] C# 版本和.NET 版本以及VS版本的对应关系

    简单的来说:    VS2010 最高用到 .Net Framework4,C# 4.0    VS2015 最高用到 .Net Framework4.6,C# 6.0    VS2017 最高用到 ...

  5. mongodb compass 启动报错()

    报错: 原因:由于直接关闭客户端,进程没关导致下次开启时,后台还是运行的所以无法重新开启 解决办法: 1.查看进程 tasklist | findstr “MongoDBCompass.exe” 2. ...

  6. [转帖]Elasticsearch数据库

    Elasticsearch数据库 2018-05-06 11:30:48 七色米 阅读数 23634更多 分类专栏: 数据库   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转 ...

  7. .NET CORE 中的缓存使用

    Net Framewoke的缓存 1.1 System.Web.Caching System.Web.Caching应该是我们最熟悉的缓存类库了,做ASP.NET开发时用到缓存基本都是使用的这个缓存组 ...

  8. mingw 编译 glfw3 的 helloworld

    glfw3 为基础开发 GUI 似乎是一个不错选项,有很多人尝试这么做了.今天也小试一把. 工具: mingw(不是 mingw-w64),头文件 GLFW/ ,库文件 glfw3.dll 需要注意, ...

  9. C#调用 kernel32.dll

    调用方法: private string mFileName; //INI文件名 public OneGanttINI(string pFileName) { this.mFileName = App ...

  10. Implementing Azure AD Single Sign-Out in ASP.NET Core(转载)

    Let's start with a scenario. Bob the user has logged in to your ASP.NET Core application through Azu ...