序言
我从事Android也有些年头了,大多时侯都在跟项目,写写业务代码,甚少花时间去研究关于Android开发基础方面的东西,时至今日我却越发明白了底层逻辑和基础知识才是进阶愈发高阶Android开发技术以及之后发展潜力的基石,只有将自己的根基打牢,这样才能在学习新事物的时侯才能更好的理解
明天我就向你们展示“一个App从源代码到安装文件,再将其安装到设备上linux系统镜像下载,最后呈现到用户手上”这段时间里,都须要做些哪些,虽然在最初写这篇文章时,其中还有一些疑惑,仍未才能完全了解,但我通过查阅资料和阐述,将之总结到这篇文章中
我写这篇文章似乎涉及了一定的技术难点和技术面广度,而且我会用你们最容易理解的方法来表述,学因而用,如若以后遇见了这种技术点,那你也可以很自信的说自己了解过,知识须要延续,而延续就须要弘扬,言传身教,我学到了是我自己的能耐,但你要是学会教会他人,那你也可以称得上是知识的传播者
哪些是虚拟机技术?
●我们开发的程序是运行在设备的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采用的是静态编译模式。一般,程序有两种运行方法:静态编译与动态解释。静态编译的程序在执行前全部被翻译为机器码,而动态解释执行的则是一句一句边运行边翻译
虚拟机原理示意图
我们说的平台模拟的虚拟机就属于TYPE2类型,底层的OS就是寄主系统,下层的OS就是目标系统,中间的HYPERVISOR就是虚拟机软件。Android虚拟机也是平台虚拟机的一种,为了后续便捷研究,我们先总结一下PC上虚拟机的运行过程。首先我们须要下载一个虚拟机软件,之后在软件里创建虚拟机,指定虚拟的硬件配置,虚拟机数据会储存在一个虚拟c盘文件里,最后我们须要为虚拟机安装目标系统,之后就可以启动虚拟机了。所以它包含几个主要部份:
●虚拟机软件
●硬件配置
●虚拟机文件
●目标系统
虚拟机和真机差别
●我们运行自己APP,既可选择真机调试运行,也可以使用虚拟机。通常情况下,使用真机速率更快,体验更佳并且真机也有自己的一些缺陷
●比如,获取成本高,如果要测试APP的兼容性,针对不同API版本的型号都进行配置的话,将会是一笔不少的花销。其次,真机的系统是经过OEM厂家订制的,不一定是原生的API和内在逻辑LINUX虚机,也难以针对GoogleAPI等服务进行开发
●如果机器里没有的话。非常地,当你想要烧写自己编译的源码,对FrameWork或则愈发底层的逻辑行调试的时侯,真机则愈发不便捷。OEM厂家通常还会锁定救砖功能
●比如FastBoot,只能用厂家自己的救砖工具进行救砖,通常也不容获取。而且每家的源码和镜像文件格式都不相同,编译的标准源码难以直接烧写。所以,假若要进行Android系统学习,学习虚拟机的使用还是十分必要的
虚拟机的优点
●运行在主机上,完全独立,虚拟机上面的所有操作不会影响主机,虽然虚拟崩溃了,通常拿来测试或与实验,其实它有这种优点你想怎样就怎样
●下载安装速率快;通过笔记本下载apk文件后,直接将apk压缩包拖动到安卓模拟器内就可以安装,通常几秒才能完成apk文件的安装,安装速率很快,大大节约了做APP兼职任务的时间。相反,假如是手机安装apk文件的话,可能须要几分钟时间才会完成
●操作愈发简单快捷;在安卓模拟器内操作APP程序比在手机端操作要便捷的多,安卓模拟器都是界面化操作,用键盘点点就行了,而手机上面操作还需来回切换,比较麻烦
虚拟机的难点
●它就是构建在主机上,虽然是虚拟机,也是文件,很容易被破坏
●一般拿来测试或与实验,也有好多人用来上网
●虚拟机也要系统资源的,如主机是一台服务器,就只能运行一个网站手机平台虚拟机linux手机平台虚拟机linux,这么你要是用虚拟机在弄一个或多个服务器,那虚拟机上面的服务器也要资源来运行,这种都在用主机的,这样一弄主机跟虚拟机的性能都出来了
怎样进行高效的学习
结语
近段时间对Android虚拟机的相关资料进行了整合,整理成了文档,由于篇幅有限,有须要更多Android开发相关资料的朋友
资料获取方法:私信我发送:"进阶资料"免费发放
Android构架师之路还很漫长,与君自勉
PS:有问题欢迎见谅,欢迎你们在评论区留下你的建议和体会