Android Framework 如何学习,如何从应用深入到Framework?
创始人
2024-03-04 15:59:34
0

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 进行了一段时间的深入研究,并根据自己所学所理解整理了一些学习笔记,并更具不同小知识点进行了归类:

这是我学习时的一张思维导图,大家也可以看一下:

该路线共分为5大板块,分别是:Framework 通信、Framework底层服务、Framework 系统资源、Framework事件机制、Framework UI机制,在这些里面又分了许多小分支,大家可以仔细的参考看一下。针对这图中所记录的一些小知识点相关解析汇总成了一个文档形式。

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

Handler 机制实现原理部分:

1.宏观理论分析与Message源码分析
2.MessageQueue的源码分析
3.Looper的源码分析
4.handler的源码分析
5.总结

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

Zygote :

  1. Android系统的启动过程及Zygote的启动过程
  2. 应用进程的启动过程
    在这里插入图片描述
    AMS源码分析 ::https://0a.fit/acnLL
  3. Activity生命周期管理
  4. onActivityResult执行过程
  5. AMS中Activity栈管理详解

    深入PMS源码:
    1.PMS的启动过程和执行流程
    2.APK的安装和卸载源码分析
    3.PMS中intent-filter的匹配架构

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

《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 源码分析实战

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...