Framework才是Android开发的未来突破方向,《Android Framework精编内核解析》限时免费下载

前言

Framework 知识广泛应用在Android各个领域中,重要性显而易见。

**Framework始终穿插在 App 整个研发生命周期中,不管是从 0 到 1 的建立阶段,还是从 1 到 N 打磨阶段,都离不开Framework。**成为一名Android Framework高手,也是目前招聘过程中非常稀缺的人才,可以成为你的敲门砖。

下面这张图想必大家都看过,Google官方提供过一张经典的四层架构图,从下往上依次分为:Linux内核、系统库和Android运行时环境、框架层、应用层,其中每一层都包含大量的子模块或子系统。Android系统启动过程就是从下往上的一个过程:Loader → Kernel → Native → Framework → App

Loader

  • Boot ROM: 加载预设代码开始执行,并且加载引导程序到内存中

  • Boot Loader:检查RAM(内存),初始化硬件参数等功能。

Kernel

  • Kernel层是指Android内核层,到这里才刚刚开始进入Android系统

  • 启动Kernel的swapper进程(pid=0):初始化进程管理、内存管理相关工作。

  • 启动kthreadd进程(pid=2):是Linux系统的内核进程,会创建内核工作线程kworkder,软中断线程ksoftirqd,thermal等内核守护进程。

Native

  • 启动init进程(pid=1),是Linux系统的用户进程, init进程是android系统中用户空间的第一个进程

  • init进程会fork ueventd、logd、healthd、installd、adbd、lmkd等用户守护进程

  • init进程还开启servicemanager(binder管家)、bootanim(开机动画)等服务

  • init进程fork出Zygote进程,Zygote进程是Android系统的第一个Java进程,Zygote是所有Java进程的父进程

Framework

  • Zygote进程启动后,加载ZygoteInit类,注册Zygote Socket服务端套接字;加载虚拟机;加载类,加载系统资源

  • System Server进程,是由Zygote进程fork而来,System Server是Zygote孵化的第一个进程,System Server负责启动和管理整个Java framework,包含AMS,PMS,WMS等80多个服务

Application

  • Zygote进程fork出的第一个App进程是Launcher,即手机桌面APP。

  • 所有APP进程都是由zygote进程fork出来的

那么,为什么Zygote通信fork进程,使用的是socket,而不是Android的Binder?为什么是从zygote进程fork App,而不是其他进程?等等这类问题却在大厂面试中经常问到。同时,AMS(ActivityManagerService)是Android系统中一个特别重要的系统服务,也是与上层APP打交道最多的系统服务之一(几乎所有的APP应用都需要与AMS打交道)。AMS与操作系统中的进程管理和调度模块很像,除了在Android系统中非常重要之外,它涉及到的知识点也非常多。**想要了解Android的内部工作机制,就必须先了解AMS的工作原理。**AMS贯穿了Android系统组件的核心服务,主要负责Android系统中四大组件的启动、切换、调度以及应用进程管理和调度工作。

比如在Activity的启动流程中,AMS就是组件管理调度中心,什么都不干,但什么都管!**Android系统从开机到桌面,再到APP启动的完整流程,AMS无所不在……**当我们深刻了解Android启动流程与AMS特性之后,就可以解决项目开发中的很多问题,比如:屏幕适配、自定义View和ViewGroup、APK加固、热修复、组件化路由、皮肤换肤、插件化、leakCanary内存问题分析、Hilt注入、Jetpack原理、Glide原理、RXJava原理、launchModel、权限验证、四大组件等相关逻辑和代码……**但AMS本身比较复杂、难以理解,许多工作多年的Android开发者也很难弄清AMS的作用。**不少开发者也只是有了解到一些入门级的概念,比如:

  1. init进程是android系统中用户空间的第一个进程

  2. Zygote进程由init进程孵化而来。同时init进程会孵化出ServiceManager(Binder 相关)

  3. Zygote进程是Android系统的第一个Java进程(即虚拟机进程),Zygote是所有Java进程的父进程

  4. System Server是由Zygote fork而来。(Android中最重要的两个进程 Zygote,SystemServer)

  5. 我们的AMS,PMS,WMS都是SystemServer进程中的一个线程

  6. Launcher进程是我们App的第一个进程。(桌面)

当然大多数开发者更多的还是在做业务开发,对于Framework基本停留在“不够了解”的阶段,其中不乏一些工作多年的 Android 工程师。
如果想要精进,不仅要对底层原理充分了解,还要知道如何利用Framework知识指导我们代码实践开发,像Android App 的启动机制、AMS、PMS、WMS、Handler、Binder等…这样才能够真正说得上是精通Framwork。精通意味着:

  1. 首先在大厂面试环节,Framework是必问项,你可以展示出个人实力;

  2. 一旦你进入大厂,对Framework了解越多,你能够做的事情就越多,产出也会越多,而且可以持续不断的去做。

作为过来人,我发现很多学习者和实践者都在 Android Framework上面临着很多的困扰,比如:

  • 工作场景中遇到难题,往往只能靠盲猜和感觉,用临时性的补救措施去掩盖,看似解决了问题,但下次同样的问题又会发作,原因则是缺乏方法论、思路的指引以及工具支持

  • 能力修炼中,缺乏大型项目这一实践环境,对Framework只能通过理论知识进行想象,无法认识其在工作实战中的真实面目和实操过程

  • 职场晋升中,只管功能开发,不了解底层原理,缺少深入地思考与总结,无法完成复杂系统设计这类高阶工作,难以在工作中大展拳脚,而有挑战的工作往往留给有准备的人。

总之,一旦遇到问题,很少人能够由点及面逆向分析,最终找到瓶颈点和最优解决方案,而Framework是Android开发的深水区,也是衡量一个Android程序员能力高低的标准

如果你还没有掌握Framework,现在想要在最短的时间里吃透它,那么必须要跟着真正有实力的大佬一起学习!我这边珍藏了一份《Android Framework精编内核解析》。部分知识章节发布到了在知乎上已经收获了1000+的点赞量,今天在这里拿出来分享给大家。

本笔记讲解了Framework的主要模块,从环境的部署到技术的应用,再到项目实战,让我们不仅是学习框架技术的使用,而且可以学习到使用架构如何解决实际的问题,由浅入深,详细解析Framework,让你简单高效学完这块知识!

如果有需要这份《Android Framework精编内核解析》,扫描下方CSDN官方认证二维码即可【免费领取】!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值