Android 年薪百万的进阶攻略 —— 资深(专家)工程师学习路线

思惟导图

Android 资深(专家) 思惟导图

系统启动过程

这一部分是 Android 系统从按下电源键开始,而后到展现开机界面,再到展现桌面以前的一个过程。了解下面相关进程的工做流程,会对 Android 系统有一个总体的概念,是一个从 0 到 1 的过程,对深刻研究 Android 系统内部机制有很大帮助。git

  • init 进程github

    了解 init 进程建立与启动的流程。算法

  • Zygote 进程设计模式

    了解 Zygote 进程建立的流程,以及 fork 的过程。网络

  • system_server 进程架构

    了解 system_server 进程启动流程,工做流程。ide

  • ServiceManager组件化

    了解 ServiceManager 的启动流程,以及 ServiceManager 在系统中的做用。学习

内核技术

这一部分是计算机操做系统相关的原理,也是计算机相关专业的一门必修课程,推荐学习下相关知识。职业规划

  • CPU 调度
  • 进程管理
  • 文件系统
  • 内存管理

通讯方式

  • Binder

    Binder 是 Android 系统中特有的一种 IPC 通讯方式,建议阅读 Binder 相关的源码,与深刻越好,理解 Binder 工做的原理,了解服务的注册、获取、死亡通知的流程。

  • Handler

    Handler 是 Android 系统中线程间通讯的方式,已经在 Android 高级工程师部分说过了。这里必定要阅读下源码了解内部的运行机制。

  • Socket

    Socket 是系统中常见的一种 IPC 通讯方式,Socket 的应用范围很广,在进程间通讯、网络通讯都会用到,建议深刻了解下。

  • Pipe

    Pipe(管道)是 Linux 系统中常见的一种 IPC 通讯方式,建议深刻了解下工做原理。

  • signal

    signal(信号量)是系统中常见的一种 IPC 通讯方式,建议深刻了解下工做原理。

核心服务

  • Activity、Service、Broadcast、ContentProvider

    了解四大组件启动流程,理解生命周期回调过程,了解工做原理。

  • ActivityManagerService(AMS)

    理解 ActivityManagerService 工做流程,以及与 Activity 工做的流程。

  • WindowManagerService(WMS)

    理解 WindowManagerService 工做流程,以及与 ActivityManagerService 和 Activity 工做的过程。

  • View、Window、Surface

    理解 Activity、Window、View 之间的关系,了解 View 渲染机制。

  • Surface、SurfaceFlinger

    理解 View 与 Surface 之间的关系,了解 SurfaceFlinger 工做流程,理解 View 渲染的过程。

  • PackageManagerService(PKMS)

    理解 PackageManagerService 工做流程,了解 Apk 安装与卸载过程。

  • PowerManagerService(PMS)

    理解 PackageManagerService 工做流程,了解屏幕唤醒、灭屏的过程,并理解 WeakLock 机制。

  • InputManagerService(IMS)

    理解 InputManagerService 工做流程,理解事件的建立流程、事件分发机制,ANR 触发原理。

  • AudioFlinger

    理解 AudioFlinger 工做流程。

  • AssertManager

    理解 Apk 安装包中资源管理的过程。

异常处理

能够从源码的角度分析异常产生的缘由,定位异常,以及处理。

  • Watchdog
  • ANR
  • Java Crash
  • Native Crash
  • 卡顿

Java 虚拟机

  • 内存模型

    了解 JVM 内存模型,包括堆、栈、方法区、运行时常量池等。

  • 类加载机制

    了解类加载时机,类加载的过程,理解类加载器双亲委派模型。

  • 垃圾回收机制

    了解垃圾回收的缘由,理解对象生命周期,了解垃圾回收算法。

动态化

  • Android Gradle Plugin

    经过阅读 Android Gradle Plugin 源码,理解 Gradle 构建项目的过程,了解插件开发过程。

  • VirtualAPK、Tinker

经过阅读 VirtualAPK 源码,理解热修复、插件化的原理。

  • Hook 技术

设计模式与架构

  • 熟悉六大 OOD 设计原则
  • 熟悉常见的设计模式,能够熟练的运用在项目中
  • 理解 MVC、MVP、MVVM 的思想以及区别
  • 项目架构设计与重构
  • 项目组件化设计与开发

软技能

  • 拓展技术广度,其余领域的技术学习
  • 团队管理和指导新人

总结

以上就是 Android 资深(专家)工程师 的基本知识点,若是在高级工程师部分基础很牢,进阶到资深(专家)是很容易的。这个级别的知识点不只仅须要对 API 熟练应用,更重要的是对内部的运行机制的深刻理解。

咱们能够发现不少的知识点都是对 Android 系统源码的阅读来获取的,阅读源码是一个很痛苦的过程,也是必须经历的一个过程。

在阅读源码的时候建议多注重对总体流程的把握,而不是深刻细节不能自拔。毕竟咱们主要工做仍是开发 App,阅读源码是为了更好的理解内部运行机制。

专家除了具备扎实的技术深度之外,还有必定的技术广度,以及不错的架构设计能力。除了技术,软技能也是很重要的部分。好比如何管理团队,带带新人,写写 PPT,吹 NB 啥的。

已经达到了资深(专家)的开发者,之后的学习路线跟本身的职业规划有很大关系。这个级别技术也再也不那么重要,毕竟都是专家了,你们都很 NB,怎么还能让人手把手教呢?!

如下方面你们能够参考下:

  • 维护一个公众号,增长业内影响力
  • 考虑出一本书,增长业内知名度
  • 开源一个 NB 的项目,为开源贡献一份力量
  • 转型作产品或者管理
  • 换一个领域继续深刻研究

通常达到资深(专家)的开发者须要 3 - 5 年左右,本科毕业的学生年龄通常在 22 周岁左右,那么达到资深(专家)最快也得 25 周岁了。这里咱们会遇到一个职业上的危机 —— 30 岁危机。

随着年龄的愈来愈大是继续作技术?仍是转型作管理呢?Android 也没啥可研究的了,仍是换其余领域呢?这是一个值得思考的问题,我尚未这个经历(岁数还没到)不敢妄下定论,哈哈。

这里分享下网上的一份关于各大厂 Android 级别的薪资参考图(若有侵权,请联系我删除)。

大厂薪资参考,若有侵权立删!

我看到网上不少消息都说今年互联网寒冬什么什么的,其实每一年都会说寒冬。互联网总共也就发展了十几年,从 2000 年初的诺基亚到如今的智能手机时代,也就十几年的时间。谁有会预料的下一个十年以后会是什么样的呢?

因为前几年大量培训出来的开发者(这里只是说下客观事实,没有贬低的意思),整个市场涌入大量的初级、中级开发者,因此对于新人来讲的确很差找工做了,由于竞争的人多了。

本身没能力就说没能力,怎么你到哪儿,哪都大环境很差,你是破坏大环境的人啊?—— 赵本山

做为开发者咱们最好的准备就是知识的储备,若是咱们努力学习达到了高级甚至更高,目前需求量仍是很大的。目前我了解到的 Android 领域专家级别的工程师也没有多少,你们能够留意统计一下。

关于 Android 进阶的学习指南就已经完结了,欢迎你们继续关注,其余方面的技术分享,及我的感悟。

个人 GitHub

github.com/jeanboydev/…

个人公众号

欢迎你「扫一扫」下面的二维码,关注个人公众号,能够接受最新的文章推送,有丰厚的抽奖活动和福利等着你哦!😍

Android波斯湾

若是你有什么疑问或者问题,能够 点击这里 提交 issue,也能够发邮件给我 jeanboy@foxmail.com

同时欢迎你

Android技术进阶:386463747
来一块儿交流学习,群里有不少大牛和学习资料,相信必定能帮助到你!
相关文章
相关标签/搜索