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

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。精通意味着:

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
*如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618165277)

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值