快速理清 dexodexARTAOTOAT 逻辑关系

2020-10-14 08:32 Android技术之家

目的

理清 .dex、.odex、ART、AOT、OAT 等近似名称的概念和意义。

APK 生成

apk的打包过程

最终 apk 内的代码文件为 .dex 文件。

APK 安装运行

基础概念

AOT:编译方式,运行前编译。
JIT:编译方式,动态编译。
Dalvik:Android 5.0 之前默认虚拟机。
ART:Android 5.0 及其之后默认虚拟机。
OAT:Android 私有 ELF 文件格式,后缀为 .odex。不仅包含从 .dex 翻译过来的二进制本地机器指令,还包含原来的 .dex 文件内容。这使得无需重新编译原 APK 就能直接在 ART 中运行。


多种安装运行方式

名称编译方式特性备注
DalvikJIT运行时编译 .dex,.dex 是 DVM 使用的运行时编译字节码。系统第一次开机会提取 apk 内的 dex 文件生成 .odex,以提升运行时编译的速度。此 .odex 只是对 .dex 文件的提取,这样运行时无需再次从 apk 提取,可以加速编译,并非可执行文件。
ARTAOT安装时编译。安装时生成 OAT 文件,该文件包含机器码,可以直接运行。此 .odex 可以直接运行。
Android N 之后JIT、AOT 混编安装时 JIT,系统空闲时 AOT 针对 "热代码"(常用代码块)编译为 OAT 保存在本地。时间、空间的综合方案。



作者:Parallel_Lines
链接:https://www.jianshu.com/p/e52b7e460748

关注我获取更多知识或者投稿


本文章转载自公众号:jszj2014215

首页 - Android 相关的更多文章: