Android 深入系统完全讲解(3)

news2025/1/11 20:56:57

3 Zygote 虚拟机的流程,学习方法

说完了 init 的启动过程,我们来说说 Zygote 的启动过程。

在这里插入图片描述
这里我们看下整个的步骤,主要完成了:
1 startVM() 创建虚拟机
2 startReg() 注册 JNI 方法
3 preload()预加载通用类,这里主要是 framework-res.apk 这样子理解非常重要
4 startSystemServer 启动系统服务进程,非常重要
5 等待 fork 创建新的进程

我们来看下代码:

在这里插入图片描述
这里我们要看到的是 else ,我们很多命令跑起来是用的这个,可以启动对应的 jar 包的具体类。

比如/system/bin/am ,大家打开可以看看它的内容,我们后面会讲到这个。

于是我们来到了 AndroidRuntime.cpp,因为 runtime 是这个具体实现的,而我们的 AppRuntime 是继承的这个类。

在这里插入图片描述
创建完成虚拟机后,注册了对应的本地实现,后面的 Java 就可以解析执行了。

在这里插入图片描述
进入 Java 世界,调用这个静态方法,这个是我们参数带来的,就是 ZygoteInit,于是我们可以进入 Java 世界了。

于是我们来到了 frameworks\base\core\java\com\android\internal\os\ZygoteInit.java ,打开看
它的 main 方法。

这里顺便讲一下,我们这么来理解,就是我们用 C 语言实现了一个解析一套定义格式的内容,然后对应的有一些 C 的实现让它可以操作硬件,最终显示出来。

我们把这个定义的解析这一套格式叫做 Java 虚拟机,这里就是 Android 虚拟机,而能够解析的格式就是 DEX,也就是我们 APK 里面解压出来的文件。这样子去理解会好很多。

在这里插入图片描述

这里就是预加载资源,为所有后续的应用进程提供系统资源。我遵循不纠结细节,直接跟踪路线,细节交给自己学习,如果你看一本书,还是要让将非常详细,你是没法进阶的。Fork子进程时候可以快速的把父进程加载的内容复用,于是这里加载一些应用都会用到的资源。

frameworks/base/config/preloaded-classes,细节跟踪方法就可以看到。

我们一般的做法就是找一些大概原理,路径,然后在阅读代码中掌握。

在这里插入图片描述
完成创建系统服务之后,进入等待事件,主要是一些重启消息,还有关键的就是接受到系统给的创建进程任务。zygoteServer.runSelectLoop(abiList);

在这里插入图片描述
那么这里就看到我们的 SystemServer 出现了,于是我们下一节来学习这个的过程。虚拟机的学习方法,可以先去了解 Java 虚拟机,然后再学习 Android 的虚拟机,始终记得这个就是实现了一套机制,解析具体格式,需要内存管理,语法解析,执行等。通过这个抽象,就能确定你在学什么,否则会学的迷失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/146111.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【信管7.1】质量与质量管理过程

质量与质量管理过程对于我们的项目管理理论相关的学习来说,质量是除了范围、进度、成本之外的另一个核心内容。还记得我们在学习敏捷的时候讲过的项目管理三角形吗?通过之前的课程,我们已经学完了它的三个支点。接下来,我们就要学…

播客丨关于年终总结,程序员有话说

绘声绘影绘声绘影是网易云信独家打造的一档聚焦行业热点、个人成长方面的播客栏目。栏目希望通过邀请不同背景、不同行业、不同阅历的企业研发、产品、运营等相关岗位负责人作为节目嘉宾,以自身职业视角交流行业洞见和发展前景;以过来人的视角分享在时代…

dfs、bfs搜索题型小结

一、全排列 (1)1199:全排列 原题链接 解析 (2)剪枝思想 满足等式关系的全排列——dfs剪枝 (3)P1088 [NOIP2004 普及组] 火星人 原题链接 解析 二、组合(选与不选)…

web(四)—— CSS基础(选择器进阶、Emmet语法、背景属性、元素显示模式、三大特性)

一、选择器进阶目标:能够理解 复合选择器 的规则,并使用 复合选择器 在 HTML 中选择元素1. 复合选择器1.1 后代选择器:空格作用:根据 HTML 标签的嵌套关系,选择父元素 后代中 满足条件的元素 选择器语法:选…

Maven的安装配置与基本使用

Maven简介: Maven是专门用于管理和构建java项目的工具,它的主要功能有: 提供了一套标准化的项目结构标准化的项目结构: Maven提供了一套标准化的项目结构,所有的IDE使用Maven构建的项目结构完全一样,所有…

【IEEE出版社】人工智能、数据挖掘、机器人、传感等领域SCI,自引率低,对国人友好,评职毕业高分好刊~

1区人工智能类SCI&EI 【出版社】IEEE 【自引率】4.30%(低) 【国人占比】13.40% 【期刊简介】IF:6.5-7.0,JCR1区,中科院3区 【检索情况】SCI&EI 双检,正刊 【参考周期】3-5个月左右录用 【截稿日期】202…

如何彻底关闭Win10自动更新,Win10永久关闭自动更新的方法

如何彻底关闭Win10自动更新?Win10自动更新的问题是很多用户都遇到的问题,很多时候我们关闭了自动更新,过一段时间系统又自动更新了,由于win10自动更新非常顽固,所以我们要从多个地方下手才能永久关闭其自动更新&#x…

Java中几种常量池的区分

文章目录前言了解一下 ldc 指令字符串常量池在 Java 内存区域的哪个位置1.全局字符串池(string pool也有叫做string literal pool)2.class文件常量池(class constant pool)3.运行时常量池(runtime constant pool&#…

干货 | Python的面试题目+答案合集

作为一个 Python 新手,你必须熟悉基础知识。 在本期内容中我们将讨论一些 Python 面试的基础问题和高级问题以及答案,以帮助你完成面试。 包括 Python 开发问题、编程问题、数据结构问题、和 Python 脚本问题。 接下来让我们来深入研究这些问题 Pytho…

AD转换芯片精度计算及校正方法

文章目录前言一、转换精度二、重要参数1.线性误差(INL)和差分线性误差(DNL)2.失调误差和增益误差三、转换校正总结前言 本文对模数转换芯片的精度进行简要介绍,帮助大家正确选型,并介绍了一个基本的ADC转换…

postgresql13+postgis3.2安装教程

postgresql13postgis3.2安装教程 安装postgresql13 安装pg13 pg13安装包 cd /home/soft/pg tar -zxvf postgresql-13.6.tar.gz cd postgresql-13.6# yum -y install -y readline-devel./configure --prefix/usr/local/pgsqlmake -j4make install设置环境变量 vim /etc/pr…

OpenGPT的11种高效用法

1. 问答提示 2. 解释复杂的概念 3. 创作 创作需要尽可能的缩小范围,提出具体的要求,AI会给出更好的答案。 4. 准备面试 5. 教师教案 6. 编码和集成 7. 健身 8. 送礼推荐 9. 翻译 这个甚至不用去演示,openAI的翻译能力非常强大&#xff0c…

计算机专业混子应届生,如何3个月逆袭,成功上岸?

在我进入大学之前,我一直对计算机感兴趣。虽然只是考了一个一般大学,但是选专业的时候还是选了计算机专业。 本来以为自己会在大学里学到很多有用的知识,并且能够很快找到一份好工作。但是,事实并不是这样。在大学期间&#xff0c…

竞品分析:叮咚买菜

​生鲜包括了三类未加工的初级产品“果蔬(水果蔬菜)、肉类、水产品”以及两类加工产品“面包和熟食”。熟食又包括“冷藏的冷冻食品、乳制品和非冷藏的散装杂粮”。 生鲜电商就是以电子商务的形式销售以上产品。 生鲜电商有着“悠久”的历史&#xff0…

Vue组件的生命周期

一、生命周期 & 生命周期函数 1. 生命周期(Life Cycle)是指一个组件从创建 -> 运行 -> 销毁的整个阶段,强调的是一个时间段。 2. 生命周期函数:是由 vue 框架提供的内置函数,会伴随着组件的生命周期&#xf…

第四十三讲:神州防火墙混合模式的初始配置

混合模式即相当于防火墙既工作于路由模式,又工作于透明模式。在实际应用环境中,此类防火墙应用一般也比较广泛。混合模式分为两种: 一,ISP分配外网地址,内网为私网地址,服务器区域和内部地址为同一网段。这…

智慧商圈,对接微信、支付宝、云闪付实现自动积分

线下交易 商城下的门店使用本公司内部的pos机以及会员管理系统,通过pos收银时,根据管理系统配置的积分规则,可以自行给会员积分。但是当商城内部的部分门店不是使用内部的pos机进行收银时,则无法给给该批用户进行积分。以前有拍照…

吉他谱软件guitar pro2023吉他和弦、六线谱、BASS四线谱绘制

Guitar Pro由法国Arobas Music出品,主要用于管弦乐器的学习,通过建立不同的音轨,可完成不同乐器乐谱的编排制作。Guitar Pro发布23余年来,其强大的功能被广泛应用于专业乐队的创作和排练,其独创的gtp文档格式在专业领域…

「数据密集型系统搭建」原理篇|夯实基础,灵活设计

正所谓“完事开头难”,在设计技术方案时候,除了前期要做好背景调查、需求调研,开工动手的第一步就是做“数据建模”,也就是存储数据的结构设计,大部分时间是围绕关系型数据库进行的,少部分是在Redis上做K-V…

「技术直播」分布式数据库订阅功能的原理及实现

数据订阅是一种数据查询方式,其特点为:客户端执行一个查询语句后,可以增量形式,不断收到新到达服务端的、符合查询条件的数据。相比普通查询,订阅能够持续地、低延迟地将新写入的数据返回客户端。什么时候需要数据订阅…