目的

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

APK 生成

快速理清 .dex、.odex、ART、AOT、OAT 逻辑关系

apk的打包过程

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

APK 安装运行

基础概念

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

多种安装运行方式

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



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

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

快速理清 .dex、.odex、ART、AOT、OAT 逻辑关系

快速理清 .dex、.odex、ART、AOT、OAT 逻辑关系

相关文章:

  • 2022-12-23
  • 2021-11-10
  • 2021-06-11
  • 2021-09-20
  • 2022-01-08
  • 2021-11-02
猜你喜欢
  • 2022-12-23
  • 2021-07-08
  • 2022-12-23
  • 2022-03-01
  • 2022-12-23
  • 2021-08-06
  • 2021-09-13
相关资源
相似解决方案