当前位置: 首页 > 技术分析

Android 4.4虚拟机移动版本(Android 44虚拟机移动版)

时间:2023-03-11 00:47:27 技术分析

  在虚拟机设置中选择桥梁(DHCP的路由器环境需要为DHCP)

  或NAT(本地Internet访问,并对应于VMware

  DHCP

  服务和VMware

  纳特

  启用了服务和VMNET8网卡)。

  以上是VMware

  在工作站中的Android X86的虚拟机安装

  4.4适用。

  Artt

  长期以来,Dalvik虚拟机承担了Android应用的犯罪。目前,Google团队已将注意力转移到Android的核心组件上,即Dalvik。新艺术运行了在运行时解释代码的过程,并直接运行预先编写的程序。设备并允许现有开发人员快速适应Android的开发平台,Android使用Java语言用作应用语言。开发人员的编辑应用程序需要进行解释,以通过称为Dalvik的虚拟机进行编译。应用程序开发人员不需要了解该Android系统的哪种硬件和基础环境运行,因为与底层进行通信是与底层通信是Dalvik,而不是应用程序本身。虚拟机的中间位于中间。应用程序不可能完整有效地使用硬件的整个功能,并且不太可能对某些建议进行特殊优化。它的速度比iOS上的执行速度要慢。在运行过程中,虚拟的过程Machine Dalvik通过称为JIT(即时)的解释器来编译和执行。这个过程也减慢了运行效率。现在,在新的Android 4.4中,Google为开发人员提供了两种汇编模式,一个仍然是默认的dalvik模式,另一个是ART模式。在用户期间准备了ART模式的应用。安装以及最初在程序操作中的汇编操作已提出到应用程序安装。解释代码的过程后,应用程序效率将更高。

  I.概述

  我们知道,尽管Android的程序还使用Java/Kotlin语言编码并生成.Class字节码,但它不能直接在JVM上运行,但它是在其自身的VM上运行的。JVM是.Class字节码文件不是Android的最终可执行文件(执行效率问题),而是过渡产品。最后,在Android VMessence上执行了DEX文件

  1.1 Android虚拟机分类:

  Android VM通常分为两种类型:Dalvik虚拟机和艺术虚拟机。

  DILVIK虚拟机:在Android 5.0版本之前。

  艺术虚拟机:Android 5.0版本已充分使用。

  1.2虚拟机的进化和优化:

  Android 1.0,使用Dalvik作为Android虚拟机的操作环境。目前,虚拟机是一种解释执行器。

  Android 2.2,将JIT编译器添加到Android虚拟机中。

  Android 4.4,新的艺术虚拟机操作环境诞生了。目前,Art和Dalvik共存,用户可以在两者之间进行选择。

  Artroid 5.0,ART完全取代了Dalvik作为Android虚拟机的操作环境,并使用AOT预制技术将APK完整地安装。

  Android 7.0,Art Virtual Machine采用JIT/AOT混合汇编模式。

  2.达尔维克

  Dalvik是由Google本身为Android平台设计的虚拟机。它是Android平台的重要组成部分,并支持DALVIK可执行文件的操作。DEX格式是一种专门为Dalvik设计的压缩格式,适用于具有有限的内存和处理器Speedsss.google优化它的系统。经过优化的Dalvik之后,它具有高效,简洁和节省资源的特征。同时,还允许在有限的内存执行中运行多个虚拟机实例。独立的进程可以防止当虚拟机崩溃时所有程序关闭。

  2.1 Dalvik和JVM之间的差异

  Dalvik基于寄存器,而JVM基于堆栈。

  说明数:基于寄存器的操作说明将增加操作数量的大小(缺点),但它将大大减少操作说明的数量(优势)

  操作效率:基于寄存器的工作速度(CPU)比操作号码堆栈(主内存)快。

  移植:它是根据寄存器有效执行的,但是移植性差,很难越过平台。

  Dalvik虚拟机具有共享机制。不同的应用程序可以在运行时共享相同的类,并且具有更高的效率。

  2.2 JIT(恰好汇编)

  在Android 2.2之前,Dalvik虚拟机是由解释器执行的(解释器读取字节代码 - 译为机器代码-Execute -execute Machine Code in Stitle by on Stitle in Stater conter conter conter conters conter the程序,这是对此问题的低效率。,引入了JIT(即时编译器)技术。这是一种优化方法。

  JIT技术:CCHECHERS解释的机器代码。下次执行此方法时,将机器代码直接从缓存中进行执行。降低了阅读字节代码和翻译字节的操作。6次。

  注意:并非所有已执行的相应的机器代码都会被缓存。它只是被识别为热点代码的代码。这里有两个主要类别,包括:

  如何多次致电

  循环体进行多次执行(尽管只有多次执行周期,但仍会缓存整个方法的机器代码)。

  缺点:JIT技术的缺点:

  每个重新激活参考都需要重新调整。

  它消耗了更多的运行能力。

  3.艺术虚拟机

  ART虚拟机开始替换Android 5.0上的Dalvik虚拟机。它处理应用程序的方法与Dalvik虚拟机不同。它不使用JIT,而是使用AOT(提前),即提前编译技术。垃圾收集器也得到了改进和优化。

  预科机制(AOT)可以改善应用程序性能。在同一时间,ART的安装也比Dalvik更严格。

  3.1 AOT(提前)预密技术

  AOT(提前编译技术):简而言之,字节代码已提前转换为机器代码的成本,然后存储在本地磁盘上。它可以在运行时直接执行,从而避免了Dalvik期间的应用程序代码。效率大大提高。

  在Android 7.0之前,当安装Android系统安装在APK中时,将执行完整的预编辑,以提前编译字节代码,以预先计算机代码,生成燕麦文件,然后将其存储在本地磁盘上。每次应用程序运行时,都不需要重新调整应用程序。您可以直接使用本地机器代码的汇编,这将大大改进。但是,这也大大增加了安装时间,因此在Android7.0之后,重新介绍了JIT技术以形成JIT/AOT AOT混合汇编模式。

  混合汇编的特征:

  在申请安装时,未执行AOT的预先填充。

  在应用程序运行期间,翻译字节代码由解释器的翻译直接执行。(在应用程序操作期间使用JIT技术),并将热门代码信息同时记录到配置文件文件中。

  当手机输入空闲或充电状态时,系统将在应用程序目录中扫描配置文件文件,并通过AOT编译热点代码。

  下次启动时,请根据配置文件文件运行编译的机器代码,以避免在运行时转换为机器代码的方法的JIT编译。

  在应用程序操作期间,将连续记录热代码,以促进闲置或充电期间的AOT。

  使用JIT编译器补充AOT编译器,减少APK安装时间,改善操作的性能,节省存储空间并加快应用程序操作速度。

  概括:

  在Android 7.0之前,AOT是用AOT预先组件的,APK预先编写的DEX生成相应的机器代码文件。

  在Android 7.0之后,采用JIT/AOT混合汇编模式,以根据相应的配置文件在空闲时间进行预填充。

  参考:实施艺术即时(JIT)编译器

  3.2 Dalvik和Art Virtual Machine之间的区别

  Dalvik必须一次对其进行编译并重复使用,而ART只有在安装时才会开始编译(在7.0之前进行完整的预算)。

  艺术职业空间大于Dalvik(由本机代码占用的更多存储空间),即使用“时间空间”。

  ART减少了编译,降低了CPU的频率,并使用了明显改善电池电池寿命。

  艺术应用程序启动更快,操作更快,体验更顺畅,并且有更多时间反馈。

  3.3口译员,JIT,AOT对艺术的使用

  解释器:将字节代码逐一读取到机器代码-Execute机器代码一一读取,并且在反复执行相同的代码时需要重新译。

  JIT编译器:在运行时编译了热点代码(热代码),然后减慢内存。当电流继续执行时,将直接从内存中获得,以减少重复的汇编。

  AOT编译器:运行前将字节代码转换为机器代码,并且在运行时运行后的机器代码直接运行。

  在此处插入图片描述

  3.4垃圾回收的优化

  Android虚拟机(Dalvik Art)学习

  第四,Android中的几个文件

  4.1 APK文件

  APK文件实际上是zip格式。在窗口平台上,您可以将后缀格式直接更改为ZIP进行减压。减压目录如下图:

  在此处插入图片描述

  文件名描述

  meta-inf/信息描述,签名和其他用途。当编译和生成APK包时,您将对要包装的所有文件进行验证计算,并将计算结果放入Meta-Inf目录中。Android手机上的APK软件包,应用程序管理器将根据同一算法检查软件包中的文件。如果验证结果与Meta-Inf下的内容不一致,则系统将不会安装此APK。此确保无法随意更换APK包中的文件

  Res/ Store资源文件

  libs/ store是NDK编译的SO库

  AndroidManifest.xml程序完整列表文件

  classses.dex dalvik bytecode

  资源编译的二进制资源文件主要是相应的索引

  资产/预备项目中的资产目录,其他项目下的JAR包中的资产也将合并到资产目录中。

  4.2 dex文件

  DEX文件是可以由Dalvik虚拟机识别和执行的文件。Dalvik将在.dex文件中执行Dalvik字节代码,但通常Dalvik通常由Dalvik执行Dalvik的文件(即IE Odex文件)。

  DEX文件特性:

  DEX文件是Android系统中的文件。它是一种特殊的数据格式,类似于格式文件,例如APK和JAR。

  文件更紧凑:dex文件是一种文件格式,可以通过DVM识别并加载和执行。文件并提高课程的搜索速度。

  DEX文件包含应用程序的所有操作指令和运行时数据。

  与PC上的JVM相比,它可以运行.class文件,并且在Android运行.DEX文件上的Dalvik虚拟函数。

  比较.dex文件和.class文件的格式:

  在此处插入图片描述

  DEX文件结构:

  在此处插入图片描述

  4.3 Dex文件65535问题的原因

  当Android系统启动APK时,DEX将通过dexopt工具进行优化。DEXOPT首次加载DEX文件时执行的执行过程。此过程将生成ODEX文件,即优化DEX(效率(效率)执行ODEX的执行将远高于直接执行DEX文件的效率)。列表结构。但是,此链接列表的长度用简短的类型(2^16 = 65536)保存,导致方法ID的数量不能超过65536。

  4.4 Odex文件(优化DEX)

  背景:要优化Android DEX文件,要注意的一件事是DEX文件的结构紧凑,但是我们仍然必须尝试提高操作速度,因此我们仍然需要进一步优化DEX文件。

  Odex文件使用方案:

  安装阶段:安装APK时,系统将验证和优化,目的是验证代码的合法性并优化代码执行速度。验证和优化后,系统将从APK提取DEX文件以优化,并将优化的产品(ODEX文件)保存在数据/DALVIK-CACHE目录中。

  运行阶段:运行APK时,将直接加载ODEX文件,以避免重复验证和优化,从而加快APK的响应时间。

  DEX文件的生成过程:

  在Android 5.0之前:Dalvik虚拟机

  Dalvik虚拟机会在执行DEX文件,生成可执行文件Odex,保存数据/Dalvik-Cache目录之前优化DEX文件,并最终将DEX文件删除在APK文件中。

  注意:此时,此时生成的Odex文件的后缀仍然是DEX。它是一个dex文件,它仍然是字节码而不是本地计算机代码。

  Android5.0 =版本Android 8.0(Android O):艺术虚拟机

  在Android5.0之后,使用Art Virtual Mange包括DEX和编译的本地机器说明,因此它们比Android5.0之前的Odex文件大。

  燕麦文件生成过程:

  首次安装应用程序时,DEX2OAT工具将翻译DEX文件以翻译机器的成本以生成EAT格式的燕麦文件,并将其放入/data/data/data/dalvik-cache或/data/app中/packagename/directory.thing the This This,燕麦文件后缀格式为odex。

  加载燕麦文件后,ART可以直接运行而无需处理。编译时从字节码替换为机器代码,因此运行速度更快。

  在Dalvik虚拟机执行程序DEX文件之前,系统将优化DEX文件,生成可执行文件Odex,将其保存到数据/Dalvik-Cache目录中,然后在APK文件中删除DEX文件。,OLX文件后缀仍然是DEX。它是一个DEX文件,它仍然是字节代码而不是本地计算机代码。)

  注意:Android5.0及更高版本生成的燕麦文件仍然是Odex,但它不再是Android5.0和先前版本的文件格式,而是ELF格式封装的本地机器代码。该燕麦在DEX中添加了一层外壳,可以从OATX中提取。

  Android O和更高版本(= Android 8.0):艺术虚拟机

  Android 8.0及后续版本,DEX2OAT将直接生成两个OAT文件(即VDEX文件和Odex文件)。左右,Odex文件是从VDEX文件生成的新的可执行性二进制代码。从VDEX提取ODEX后,VDEX的大小降低。

  文件生成过程:

  首次安装应用程序时,将在/System/app/packageName/oat//app/packagename/oat/生成odex文件。

  在系统运行期间,虚拟机来自/System/App到/DATA/DAVILK-CACHE/。

  Odex + VDEX = APK的整个源代码(VDEX并非独立于Odex,而File odex + VDEX代表APK)。

  Odex的优势和缺点:

  优势:

  快速启动:系统第一次启动应用程序时从APK文件中读取DEX文件,并优化DEX文件和

  RAM的职业(如果未删除APK文件中的DEX,则在同一应用程序中将有两个DEX文件:在APK和DATA/DALVIK-CACHE DIRECTORY中)。

  安全性:防止来自第三个 - 参与者的计数器 - 编写系统(Odex文件遵循系统环境的变化,环境将无法运行; APK文件不包含DEX文件,并且无法独立操作。)

  缺点:

  优化的ODEX文件大小通常是原始DEX文件(空间更改时间)的1到4倍。

  4.5 VDEX文件

  VDEX文件是适用于Android O(Android 8.0)的新格式包,以减少DEX2AIT时间。

  Dex2oat触发场景:

  当系统OTA(系统升级)时,用户自己的应用程序不会更改,但是框架代码已更改,因此您需要重新借用这些应用程序。如果没有VDEX文件,则需要检查DEX的合法性在apk中归档;如果有VDEX文件,则可以省略验证过程并节省一些时间。

  当应用程序的JIT配置文件更改时,背景DEXOPT将在后台重新使用DEX2AIT,因为使用VDEX,您还可以跳过此时DEX文件的验证过程。

  DEX文件直接转换可以执行二进制代码文件:

  首次安装应用程序时,将在/System/app/packageName/Oat//app/packagename/oat/生成VDEX文件。

  在系统运行期间,虚拟机来自/System/App到/DATA/DAVILK-CACHE/。

  4.6艺术档案

  在虚拟机执行ART文件后,虚拟机生成的文件执行了APK激活的文件(记录函数地址信息,以方便地址为方便地址)后,虚拟机执行apk.generally generally,通常的相关地址记录使用的JAR软件包保存在数据/ Dalvik-Cache/ Directory中。

  第一个启动不会在/System/app/packagename/Oat/中生成,并且将来不会是。

  当运行Odex文件时,虚拟机会计算函数调用频率以修改函数地址。

  最后,通过/data/davilk-cache中的虚拟机生成艺术文件(ART文件)。

  生成ART文件后,Odex和VDEX Une/System/App将无效。即使删除,APK也会正常运行。

  在APK文件下方/系统/应用程序之前按下新的APK文件封面,该文件将触发PMS Scanning Force_Dex的标志,强行生成新的VDEX文件,覆盖以前的VDEX文件。由于机制,该新的VDEX文件将是复制/data/dalvik-cache/,ART文件更改了。

  4.7燕麦文件

  艺术虚拟机运行燕麦文件。燕麦文件是一种Android私有小精灵文件格式。燕麦文件包含从dex文件翻译的本地计算机指令,还包含原始的dex文件内容(如下图所示)。因此,燕麦文件大于odex文件。在安装过程中,apk将生成燕麦通过DEX2OAT工具,文件(文件后缀或odex)。对于APK,燕麦文件实际包装到Odex文件,即燕麦= odex。

  注意:android5.0及后续版本,燕麦文件的后缀仍然是odex,但它不再是android5.0之前的文件格式,而是元素封装的本地计算机代码,以elf格式封装。可以考虑燕麦添加DEX的外壳层,可以从OATX中提取。

  直接在虚拟Android中下载APK安装。

  VM虚拟Android操作也存在问题。您无法经常捕获鼠标。建议您下载“可靠助手”

  专业的Android虚拟机!

  VMOS Pro支持Android 4.4,这与Android 4.0没有不同。

  虚拟机是指在计算机上模拟手机的效果,而不是手机上的软件。

  世界上只有xiaoyao Android模拟器支持4.2.2、4.4.4和5.1.1三个Android系统模拟器