Android Framework 如何学习,如何从应用深入到Framework?

1、为什么要学Android Framework呢?

一方面,面试考察相关内容的可能性高。随着Android开发者越来越多,企业对Android程序员的筛选也有了更高的要求, 考察对Android底层逻辑的理解和思考就是很重要的一个方面,尤其是Android Framewok中各个组件的原理。Framewok相关的知识是一个深层次的内容,有些面试官喜欢一直问到你答不上来为止,正儿八经的考察你的技术能力,这也要求Android开发工程师对相关知识有一个较为全面的认识。

另一方面,学习Android Framewok本身就是有价值的。很多公司的应用开发需要基于模块化、层次化、组件化、控件化来设计架构,它的基础就是建立在Android Framework框架的底层原理之上,学习Framewok可以深层次的去解决安卓应用开始时遇到的一些难题,甚至不少公司都有设置专门的Android Framewok开发岗位。大家都知道目前一般的Android开发者已经趋于饱和,发展的方向无非就是进阶成为中高级Android开发,或者深入Android底层逻辑转向系统开发,大家可以选择一条路径去拓宽自己的深度和广度。

例如:某场哔哩哔哩的Android开发工程师岗位面试上来就是:
1、安卓的系统架构了解吗
2、有做过framework层的开发吗
……

如果是你,你会怎么回答?

2、具体要怎么去学呢?

我们都知道,Android系统架构可以分为五个层面,从上到下依次是应用层、应用框架层、系统运行库层、硬件抽象层和Linux内核层。每个层面又涉及了很多的细分要点,在进行学习时,一定要先理解整体的流程,然后再去细啃“硬骨头”。这里推荐大家阅读这两本专业书籍:《深入理解Android》和《Android内核剖析》,读完真的收获满满,同时大家还要学会去看源码,没必要花大量时间去复写代码,不要想着去全盘吸收,学习跟踪方法和把握整体的流程才是重要之处。

3、Android Framework想要精通的话还要学什么?

如果想要精通Framework,不仅要对底层原理有一个比较充分的了解,还要能够利用Framework知识去指导实际的开发工作,包括Handler、Binder、Android系统启动流程以及AMS、PMS等内容最好都要会。

例如:Android 系统启动流程
第一步:手机开机后,引导芯片启动,引导芯片开始从固化在ROM里的预设代码执行,加载引导程序到到RAM,bootloader检查RAM,初始化硬件参数等功能;
第二步:硬件等参数初始化完成后,进入到Kernel层,Kernel层主要加载一些硬件设备驱动,初始化进程管理等操作。在Kernel中首先启动swapper进程(pid=0),用于初始化进程管理、内管管理、加载Driver等操作,再启动kthread进程(pid=2);
第三步:Kernel层加载完毕后,硬件设备驱动与HAL层进行交互。初始化进程管理等操作会启动INIT进程;
第四步:init进程(pid=1)启动后,会启动adbd,logd等用户守护进程,并且会启动servicemanager等重要服务,同时孵化出zygote进程;
第五步:zygote进程加载虚拟机,启动System Server;它负责启动和管理整个Java Framework ;
第六步:zygote同时会启动相关的APP进程,它启动的第一个APP进程为Launcher,然后启动Email,SMS等进程,所有的APP进程都有zygote fork生成。


之前小编为了彻底搞的这块知识点,对Framework 进行了一段时间的深入研究,并根据自己所学所理解整理了一些学习笔记,并更具不同小知识点进行了归类:

这是我学习时的一张思维导图,大家也可以看一下:
Android Framework 如何学习,如何从应用深入到Framework?_第1张图片
该路线共分为5大板块,分别是:Framework 通信、Framework底层服务、Framework 系统资源、Framework事件机制、Framework UI机制,在这些里面又分了许多小分支,大家可以仔细的参考看一下。针对这图中所记录的一些小知识点相关解析汇总成了一个文档形式。

《Framework 核心知识点汇总手册》:https://0a.fit/acnLL

Handler 机制实现原理部分:

1.宏观理论分析与Message源码分析
2.MessageQueue的源码分析
3.Looper的源码分析
4.handler的源码分析
5.总结
Android Framework 如何学习,如何从应用深入到Framework?_第2张图片

Binder 原理:
1.学习Binder前必须要了解的知识点
2.ServiceManager中的Binder机制
3.系统服务的注册过程
4.ServiceManager的启动过程
5.系统服务的获取过程
6.Java Binder的初始化
7.Java Binder中系统服务的注册过程

Android Framework 如何学习,如何从应用深入到Framework?_第3张图片

Zygote :

  1. Android系统的启动过程及Zygote的启动过程
  2. 应用进程的启动过程
    Android Framework 如何学习,如何从应用深入到Framework?_第4张图片
    AMS源码分析 ::https://0a.fit/acnLL
  3. Activity生命周期管理
  4. onActivityResult执行过程
  5. AMS中Activity栈管理详解
    Android Framework 如何学习,如何从应用深入到Framework?_第5张图片
    深入PMS源码:
    1.PMS的启动过程和执行流程
    2.APK的安装和卸载源码分析
    3.PMS中intent-filter的匹配架构
    Android Framework 如何学习,如何从应用深入到Framework?_第6张图片

WMS:
1.WMS的诞生
2.WMS的重要成员和Window的添加过程
3.Window的删除过程

Android Framework 如何学习,如何从应用深入到Framework?_第7张图片

《Android Framework学习手册》:https://0a.fit/acnLL

  1. 开机Init 进程
  2. 开机启动 Zygote 进程
  3. 开机启动 SystemServer 进程
  4. Binder 驱动
  5. AMS 的启动过程
  6. PMS 的启动过程
  7. Launcher 的启动过程
  8. Android 四大组件
  9. Android 系统服务 - Input 事件的分发过程
  10. Android 底层渲染 - 屏幕刷新机制源码分析
  11. Android 源码分析实战

Android Framework 如何学习,如何从应用深入到Framework?_第8张图片

你可能感兴趣的:(移动开发,Android,Framework,android,系统架构,移动开发,Framework,Android,底层)