美文网首页
Android 虚拟机技术为何至今依旧 “屹立不倒” ?

Android 虚拟机技术为何至今依旧 “屹立不倒” ?

作者: 程序老秃子 | 来源:发表于2022-04-22 15:11 被阅读0次

前言

QQ截图20220422144553.png

我从事 Android 也有些年头了,大多时候都在跟项目,写写业务代码,很少花时间去研究关于 Android 开发基础方面的东西,时至今日我却越发明白了底层逻辑和基础知识才是进阶更加高阶 Android 开发技术以及以后发展潜力的基石,只有将自己的根基打牢,这样才会在学习新事物的时候能够更好的理解

今天我就向大家展示“一个App从源代码到安装文件,再将其安装到设备上,最后呈现到用户手上”这段时间里,都需要做些什么,其实在最初写这篇文章时,其中还有一些疑问,尚未能够完全了解,但我通过查阅资料和探讨,将之总结到这篇文章中

我写这篇文章虽然涉及了一定的技术难点和技术面广度,但是我会用大家最容易理解的方式来叙述,学以致用,如若以后遇到了这些技术点,那你也可以很自信的说自己了解过,知识需要延续,而延续就需要传承,言传身教,我学到了是我自己的本事,但你要是学会教会别人,那你也可以称得上是知识的传播者

什么是虚拟机技术?

QQ截图20220422144643.png

● 我们开发的程序是运行在设备的CPU上的,然而我们世界是多样性的,CPU也不例外。现实中存在各种架构的CPU,例如ARM, Arm64, x86, x64, MIPS,架构不同那么CPU的指令及执行方式也就不同。而我们总是希望我们的程序可以运行在各种CPU上,你的App总不能因为小米和华为手机使用了不同架构的CUP就二选一吧?

● 那这个问题怎么解决呢?

● 最常用的方式就是针对不同的CPU架构,将程序编译为对应CPU的机器码文件。例如你有一款App要同时支持ARM和x86架构的手机,那么你就要为这两种手机各编译一个安装包,而且他们之间不能互换

● 而等到类似于Java这种虚拟机语言出现后,人们就多了一个选择,在程序和硬件设备之间增加了一个虚拟层,让程序运行在虚拟层里,虚拟层运行在硬件上面,那么程序员再也不用关心各种各样的CPU架构了,那是虚拟层的事情,这个虚拟层俗称虚拟机

虚拟机是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。虚拟机有自己完善的硬件架构,如处理器、堆栈等,还具有相应的指令系统

Android虚拟机是什么?

Android虚拟机是Google公司设计的用于android平台的虚拟机,google参考Java虚拟机,根据移动设备的一些特性进行优化,最终形成了android的虚拟机。android虚拟机是面向Linux,嵌入式操作系统的虚拟机,主要负责生命周期管理、堆栈管理、线程管理、安全和线程管理,垃圾回收等android虚拟机分为Dalvik虚拟机和ART虚拟机

● 最初的android系统采用的是Dalvik虚拟机,之后随着android系统的演进,出现了ART虚拟机,两者最大的区别在于,Dalvik虚拟机采用的是动态编译,而ART采用的是静态编译模式。通常,程序有两种运行方式:静态编译与动态解释。静态编译的程序在执行前全部被翻译为机器码,而动态解释执行的则是一句一句边运行边翻译

虚拟机原理示意图

749881f9daac1c0255c4d31e4b3e8aa9.png

我们说的平台模拟的虚拟机就属于TYPE2类型,底层的OS就是宿主系统,上层的OS就是目标系统,中间的HYPER VISOR就是虚拟机软件。Android虚拟机也是平台虚拟机的一种,为了后续方便研究,我们先总结一下PC上虚拟机的运行过程。首先我们需要下载一个虚拟机软件,然后在软件里创建虚拟机,指定虚拟的硬件配置,虚拟机数据会存储在一个虚拟磁盘文件里,最后我们需要为虚拟机安装目标系统,然后就可以启动虚拟机了。所以它包含几个主要部分:

● 虚拟机软件

● 硬件配置

● 虚拟机文件

● 目标系统

虚拟机和真机差异

QQ截图20220422144732.png

● 我们运行自己APP,既可选择真机调试运行,也可以使用虚拟机。一般情况下,使用真机速度更快,体验更佳但是真机也有自己的一些缺陷

● 比如,获取成本高,假如要测试APP的兼容性,针对不同API版本的机型都进行配置的话,将会是一笔不少的花费。其次,真机的系统是经过OEM厂家定制的,不一定是原生的API和内在逻辑,也无法针对GoogleAPI等服务进行开发

● 如果机器里没有的话。特别地,当你想要烧录自己编译的源码,对FrameWork或者更加底层的逻辑行调试的时候,真机则更加不方便。OEM厂家一般都会锁定刷机功能

● 比如FastBoot,只能用厂家自己的刷机工具进行刷机,一般也不容获取。并且每家的源码和镜像文件格式都不相同,编译的标准源码无法直接烧录。所以,如果要进行Android系统学习,学习虚拟机的使用还是非常必要的

虚拟机的优点

● 运行在主机上,完全独立,虚拟机里面的所有操作不会影响主机,即使虚拟崩溃了,一般用来测试或与实验,当然它有这些优点你想怎么就怎么

● 下载安装速度快;通过电脑下载apk文件后,直接将apk压缩包拖动到安卓模拟器内就可以安装,一般几秒就能完成apk文件的安装,安装速度很快,大大节省了做APP兼职任务的时间。相反,如果是手机安装apk文件的话,可能需要几分钟时间才能完成

● 操作更加简单快捷;在安卓模拟器内操作APP程序比在手机端操作要方便的多,安卓模拟器都是界面化操作,用鼠标点点就行了,而手机里面操作还需来回切换,比较麻烦

虚拟机的难点

● 它就是建立在主机上,毕竟是虚拟机,也是文件,很容易被破坏

● 一般用来测试或与实验,也有很多人拿来上网

● 虚拟机也要系统资源的,如主机是一台服务器,就只能运行一个网站,那么你要是用虚拟机在弄一个或多个服务器,那虚拟机里面的服务器也要资源来运行,这些都在用主机的,这样一弄主机跟虚拟机的性能都下来了

如何进行高效的学习

QQ截图20220422144059.png
QQ截图20220422144046.png
QQ截图20220422144033.png
QQ截图20220422144006.png
QQ截图20220422143946.png

结语

近段时间对 Android 虚拟机的相关资料进行了整合,整理成了文档,因为篇幅有限,有需要更多 Android 开发相关资料的同学

资料获取方式:现在点击免费获取更多进阶资料+学习笔记+面试真题

Android架构师之路还很漫长,与君共勉

PS:有问题欢迎指正,欢迎大家在评论区留下你的建议和感受

相关文章

  • Android 虚拟机技术为何至今依旧 “屹立不倒” ?

    前言 我从事 Android 也有些年头了,大多时候都在跟项目,写写业务代码,很少花时间去研究关于 Android...

  • 初心

    往日的翠绿 已换成黄色窗帘 虽然枯萎成标本 但屹立不倒 红心依旧

  • 如果世界崩塌,人依旧屹立不倒

    时光匆匆,总感觉一眼就能望到尽头。人生的舞台,要由自己演绎。无数次我都想对自己说那是生活。可是生活充满了许多未知与...

  • 学问商学院:跟世界500强学经营

    美国通用电气公司(General Electric Company)创立于1892年,却能经营至今屹立不倒,并且在...

  • 永远屹立不倒

    花开的四月没看到花开,飘雪的十二月未曾眼见雪落,冬天还不太投入,霜雪不禁,暖春在望,也留要开始新的轮转。 现在的南...

  • 屹立依旧

    第一回见到他的名字,还不了解他。那时,看到他的名字,我就在心里不由地赞叹了一声。 出生于零三年年末的我...

  • 独立

    因为无所依靠,所以屹立不倒。

  • 橘子洲

    屹立湘江不倒,反手为掌开国!

  • 论过气游戏DNF为何依然屹立不倒

    DNF(地下城与勇士),一款年年被" 过气 "的游戏,如今的活跃人数相比巅峰时期已是下降许多。不过,其依然是腾讯吸...

  • 古绝.《屹立不倒》

    晴空万里白云飘, 芳草萋萋百树茂。 屹立多少严寒冬, 直把筋骨任风扫。 一一彭甫2018年 4月11日下午迎接 鲍...

网友评论

      本文标题:Android 虚拟机技术为何至今依旧 “屹立不倒” ?

      本文链接:https://www.haomeiwen.com/subject/mernertx.html