安卓是基于Linux的,是宏内核,由一堆底层特权模式的核心代码紧密组合在一起。这个架构,它的灵活性是不够的。面对各种硬件配置的手机,或者平板、电视之类的系统,它都是这一个架构,怎么适应?于是就搞出一个叫“虚拟机”的东西,假设大家都是在虚拟机上运行,代码是跨平台的,这么幻想着开发。每一个安卓应用,都在操作系统底层对应着一个虚拟机实例,由这个虚拟机来伺候运行应用程序的代码。
安卓程序开发者写的代码,其实是针对虚拟机的,所有机型都是一样的程序文件。但是不同机型,底层的机器代码其实不一样,如CPU类型不同。这样,虽然开发者能够一套程序所有安卓机都能跑(就是常见的APK安装文件),但是中间就需要经过虚拟机的翻译。
在早期版本的安卓系统中,这个虚拟机甚至是在实时解释翻译应用程序的代码,而且每次运行都要解释一次。执行时碰到一段代码,就解释翻译一段,变成机器码交给底层执行。不能整个应用程序一次性全翻译完,这样会卡。应用需要点一下就立刻能进去,等用户真开始操作了再把相关代码调上来解释翻译。
后来安卓进步了,在第一次安装APK程序时,直接一次性全翻成机器码,效率就得到了提高。虽然安装过程会慢一点,程序占用空间也大了一点,但每次点开运行时都好多了。
2024-11-15 09:39:10
2024-11-14 10:22:36
2024-11-13 09:26:00
2024-11-11 10:21:06
2024-11-08 10:49:55
2024-11-06 10:35:57