随着互联网时代产品的不断更新,各大厂、各中小型公司的招聘需求也在不断的变更。Android 开发行业就是一个很好的例子,从最开始火爆的热门行业,现在却变成内卷最严重的行业。如果想要找份高薪的工作,你还得要对某个或多个技术板块有着深入了解,要么就是对一些新技术有着一定的了解;否则你就只配那种最低的工资,天天加班。
新技术例如:Kotlin、Jetpack、Compose……等
可以继续深挖的技术例如有:开源库原理、Framework、性能优化……等
就拿Framework 为例来说,除了通常市场上一些(小米、OPPO、美团……等)大厂需要这方面的人才外,现在热火的车企行业也在广招这方面的人才。
所以说深耕Framework 还是可以的,毕竟目前趋势在这里。
首先你得知道什么是Framework?Framework里面的内容需要学习那些?
Framework是一个架构,它是一个语言开发软件,提供了软件开发的框架,使开发更具工程性、简便性和稳定性。
下面这张图想必大家都看过,Google官方提供过一张经典的平台架构图,从下往上依次分为:Linux内核、硬件抽象层、Native层、Java Framework层、App层,每一层都包含大量的子模块或子系统。
可以看到具体app的下面就是Framework层的支撑。所以掌握Framework层非常有助于我们开发出一个性能良好的App,另外在大厂的面试过程中,Framework也是高阶面试时必问的问题。例如:
- 为什么Zygote通信fork进程,使用的是socket,而不是Android的Binder?
- 为什么是从zygote进程fork App,而不是其他进程?
- Binder在做数据传输过程中,最大的数据量限制是多少?
- 打开一个Activity的过程中经历过几次跨进程调用?
- ANR弹框的原理是什么?
- ……
等等这类问题却在大厂面试中经常问到,如果有会小伙伴会这些问题的,欢迎大家在评论区留言回答。
在所有的Framework知识中,要数最重要的还是AMS,主打和Activity,Service,ContentProvider,Broadcast等交互:
看一下上图,Activity启动,涉及到ActivityThread,AMS,H类,上述过程还涉及到多次跨进程调用,涉及到各种binder的知识。
搞清楚这些:我们就可以去研究各种黑科技,例如在做插件化的时候,你需要占坑Activity等,hook代码等都是在和AMS斗智斗勇;在做性能优化的时候,你也要了解AMS是如何调度Activity的,消息队列是如何运转的,这些必须要要搞清楚。
当然大多数开发者更多的还是在做业务开发,对于Framework基本停留在“不够了解”的阶段,其中不乏一些工作多年的 Android 工程师。
如果想要精进,不仅要对底层原理充分了解,还要知道如何利用Framework知识指导我们代码实践开发,像Android App 的启动机制、AMS、PMS、WMS、Handler、Binder等…
考虑到 Framework 中所需要学习的知识点较多,想一次性全部在这讲完有点不太现实,于是对Framework 的所有知识点整理了一条完整知识路线,并将相关的知识点解析整理成了对应的学习手册,请继续往下看:
该路线共分为5大版块,分别是:Framework 通信、Framework底层服务、Framework 系统资源、Framework事件机制、Framework UI机制,在这些里面又分了许多小分支,大家可以仔细的参考看一下。针对这图中所记录的一些小知识点相关解析汇总成了一个文档形式,有需要的可以
Binder 原理:
1.学习Binder前必须要了解的知识点
2.ServiceManager中的Binder机制
3.系统服务的注册过程
4.ServiceManager的启动过程
5.系统服务的获取过程
6.Java Binder的初始化
7.Java Binder中系统服务的注册过程
Zygote :
- Android系统的启动过程及Zygote的启动过程
- 应用进程的启动过程
AMS源码分析 :
- Activity生命周期管理
- onActivityResult执行过程
- AMS中Activity栈管理详解
深入PMS源码:
1.PMS的启动过程和执行流程
2.APK的安装和卸载源码分析
3.PMS中intent-filter的匹配架构
WMS:
1.WMS的诞生
2.WMS的重要成员和Window的添加过程
3.Window的删除过程
《Android Framework学习手册》:
- 开机Init 进程
- 开机启动 Zygote 进程
- 开机启动 SystemServer 进程
- Binder 驱动
- AMS 的启动过程
- PMS 的启动过程
- Launcher 的启动过程
- Android 四大组件
- Android 系统服务 – Input 事件的分发过程
- Android 底层渲染 – 屏幕刷新机制源码分析
- Android 源码分析实战
有需要的可以 点击直接参考↓↓↓ 学习!
有需要的可以复制下方链接,传送直达!!!https://qr21.cn/CaZQLo?BIZ=ECOMMERCE
作为过来人,发现很多学习者和实践者都在 Android Framework上面临着很多的困扰,比如:
- 工作场景中遇到难题,往往只能靠盲猜和感觉,用临时性的补救措施去掩盖,看似解决了问题,但下次同样的问题又会发作,原因则是缺乏方法论、思路的指引以及工具支持;
- 能力修炼中,缺乏互联网项目这一实践环境,对Framework只能通过理论知识进行想象,无法认识其在工作实战中的真实面目和实操过程;
- 职场晋升中,只管功能开发,不了解底层原理,缺少深入地思考与总结,无法完成复杂系统设计这类高阶工作,难以在工作中大展拳脚,而有挑战的工作往往留给有准备的人。