Android系统APK、DEX、VDex、O Dex和ART模式详解

更新:11-03 神话故事 我要投稿 纠错 投诉

大家好,Android系统APK、DEX、VDex、O Dex和ART模式详解相信很多的网友都不是很明白,包括也是一样,不过没有关系,接下来就来为大家分享关于Android系统APK、DEX、VDex、O Dex和ART模式详解和的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

apkMETE-INF: 存储应用签名证书等信息

res: 存储资源文件

AndroidManifest.xml:应用程序配置文件

classes.dex: 应用程序二进制字节码文件

resources.arsc:二进制资源文件

dex

dex(Dalvik VM Excutors):Dalvik虚拟机执行程序在执行前需要优化

image

vdex

android O 新格式包,dex代码直接转换为可执行二进制代码文件:

1、首次启动时会在/system/app//oat/下生成;

2.系统运行时,虚拟机将其从“/system/app”复制到“/data/davilk-cache/”

odex

在Android N 之前,Dalvik虚拟机执行程序dex文件之前,系统会对dex文件进行优化,生成可执行文件odex,保存到data/dalvik-cache目录下,最后删除其中的dex文件apk 文件。

优势:

1.减少启动时间(省去系统第一次启动应用程序时从apk文件中读取dex文件的过程并优化dex文件)和RAM使用量(如果不删除apk文件中的dex,同一个应用程序将有两个dex 文件:在apk 中和在data/dalvik-cache 目录中)。

2、防止第三方用户反编译系统软件(odex文件跟随系统环境变化,环境改变就无法运行;而apk文件不包含dex文件,无法独立运行)。

在Android O 之后,odex是从vdex文件中提取一些模块生成的新可执行二进制码文件。从vdex中提取odex后,vdex的大小会减小。

1、第一次启动时会在/system/app//oat/下生成。

2.系统运行时,虚拟机将其从“/system/app”复制到“/data/davilk-cache/”

3.odex + vdex=apk的所有源代码(vdex不是独立于odex的文件,只有odex + vdex代表一个apk)

art

Odex经过优化,生成可执行二进制代码文件,主要是apk启动的常用函数相关地址的记录,方便寻址相关;通常常用jar包的相关地址记录都保存在data/dalvik-cache/中。

1、首次启动不会在/system/app//oat/下生成,以后也不会生成;

2、odex文件运行时,虚拟机计算函数调用频率并修改函数地址;

3、最后由虚拟机在/data/davilk-cache/中生成;

4.生成art文件后,/system/app下的odex和vdex将失效。即使删除了,apk也能正常运行。

5.推送新的apk文件覆盖/system/app中之前的apk文件,这会触发PKMS在扫描时发出force_dex标志强行生成新的vdex 文件,并覆盖之前的vdex文件。由于某种机制,这个新的vdex文件会被复制到/data/dalvik-cache/,因此art文件也发生了变化。

oat

ART 虚拟机使用oat 文件。 oat 文件是Android 私有ELF 文件格式。它不仅包含从DEX文件翻译而来的本地机器指令,还包含原始DEX文件内容。 APK安装过程中,会通过dex2oat工具生成一个OAT文件。对于apk来说,oat文件其实就是odex文件的打包,即oat=odex。对于某些框架中的一些jar包,会生成对应的oat后缀文件,如system@framework@boot-telephony-common.oat。

QA

从Android 5.0开始,默认使用ART,放弃Dalvik。该应用程序将在安装过程中编译成OAT 文件。 (ART上运行的格式) ODEX有什么用? Google权威解答:Dex文件编译使用一个叫dex2oat的工具,比dexopt花费更多时间。时间的增加各不相同,但编译时间增加2-3 倍并不罕见。例如,使用dexopt 安装通常需要一秒钟的应用程序可能需要2-3 秒。

将DEX 转换为OAT 的过程必须由5.0 以上的系统用户在安装程序或刷入ROM 或增量更新后首次启动系统时执行。据谷歌介绍,与ODEX优化相比,将未优化的DEX转换为OAT需要更长的时间,比如2-3倍。例如,如果安装odex 优化的程序需要1 秒,则安装未优化的程序将需要2 到3 秒。可见,虽然dalvik已经被弃用,但ODEX优化在Android 5.0及以上系统中仍然发挥着作用。 ODEX 优化实际上是由一个名为WITH_DEXPREOPT 的参数控制的。当此参数打开时,APK、JAR 和内核映像将被优化。

文章分享结束,Android系统APK、DEX、VDex、O Dex和ART模式详解和的答案你都知道了吗?欢迎再次光临本站哦!

用户评论

稳妥

我刚开始学安卓开发,这些缩写搞得一头雾水啊!

    有18位网友表示赞同!

像从了良

想问问大佬们,这几个概念哪一个最重要?

    有10位网友表示赞同!

北染陌人

看得懂标题内容,就是实践起来还不太清楚区别。

    有9位网友表示赞同!

反正是我

感觉这个话题很专业,需要好好查资料才行。

    有9位网友表示赞同!

眉黛如画

学习ANDROID开发好难,这么多技术要掌握啊。

    有19位网友表示赞同!

桃洛憬

这些术语像谜题一样,慢慢来琢磨吧!

    有10位网友表示赞同!

盲从于你

希望能看到详细的解释,这样更能理解它们之间的关系。

    有15位网友表示赞同!

青袂婉约

感觉dex这种文件格式很常见啊。

    有5位网友表示赞同!

揉乱头发

最近在研究安卓系统的底层架构,这个话题很有用!

    有10位网友表示赞同!

我就是这样一个人

了解了这些概念,是不是能开发出更高效的安卓应用?

    有8位网友表示赞同!

伤离别

这几个缩写我倒是听过,不过具体解释还是不太清楚。

    有18位网友表示赞同!

日久见人心

安卓开发需要学习这么多理论知识,真是让人望而却步!

    有15位网友表示赞同!

纯情小火鸡

感觉ศึกษา这些概念很有挑战性,期待找到答案!

    有17位网友表示赞同!

执笔画眉

希望能看到一些图示说明,这样更容易理解.

    有9位网友表示赞同!

命运不堪浮华

想知道这些概念在实际应用中有什么用处?

    有6位网友表示赞同!

余温散尽ぺ

学习安卓开发的过程中,遇到很多这样的问题,需要不断积累经验。

    有19位网友表示赞同!

容纳我ii

这个话题应该很有深度,深入了解的话也许能提高我的开发水平!

    有12位网友表示赞同!

猫腻

看到这么多评论,感觉自己并不孤单!

    有5位网友表示赞同!

丢了爱情i

期待后续的讨论,希望能了解更多关于安卓平台的信息!

    有6位网友表示赞同!

【Android系统APK、DEX、VDex、O Dex和ART模式详解】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:Android休眠唤醒机制基础教程(第一部分) 下一篇:揭开维罗妮卡轻生的神秘面纱:探寻其内心世界