目的

理清 .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 中运行。

多种安装运行方式

名称 编译方式 特性 备注
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 逻辑关系相关推荐

  1. Android执行时ART载入OAT文件的过程分析

    在前面一文中,我们介绍了Android执行时ART,它的核心是OAT文件.OAT文件是一种Android私有ELF文件格式,它不仅包括有从DEX文件翻译而来的本地机器指令.还包括有原来的DEX文件内容 ...

  2. Unity新项目如何快速理清顶层代码结构

    Unity新项目如何快速理清顶层代码结构 半路上手新项目时弄懂scene切换流程是有必要的,scene切换可以说是unity最上层的代码资源结构 思路 首先我们在入口scene(第一个scene)中添 ...

  3. 通过简单例子 | 快速理清 UML类图中六大关系

    类与类之间的六大关系 泛化 ( Generalization ) -> 表继承关系 实现 ( Realization ) 关联 ( Association ) 聚合 ( Aggregation ...

  4. 理清Activity、View及Window之间关系

    我的简书同步发布:理清Activity.View及Window之间关系 转载请注明出处:[huachao1001的专栏:http://blog.csdn.net/huachao1001] View.W ...

  5. python使用缩进来体现代码之间的逻辑关系-python使用缩进来体现代码之间的逻辑关系吗?...

    对,python使用缩进来体现代码之间的逻辑关系,对缩进的要求非常严格.Python语言通过缩进来组织代码块,这是Python的强制要求.在代码前放置空格来缩进语句即可创建语句块,语句块中的每行必须是 ...

  6. python中控制代码块逻辑关系_一、Python基础知识

    1.1 Python简介 (1)解释型语言 解释型语言在运行程序的时候才逐行翻译.运行. ①优点: 有良好的平台兼容性,在任何环境中都可以运行(安装了解释器)灵活,修改代码的时候直接修改就可以,可以快 ...

  7. python使用缩进来体现-python使用缩进来体现代码之间的逻辑关系吗?

    对,python使用缩进来体现代码之间的逻辑关系,对缩进的要求非常严格.Python语言通过缩进来组织代码块,这是Python的强制要求.在代码前放置空格来缩进语句即可创建语句块,语句块中的每行必须是 ...

  8. SAP库存表之间的逻辑关系

    SAP库存表之间的逻辑关系 转载于SAP学习门户网,原文链接: http://www.sap6.com/learn/mm/073504302015/3370.html 当前库存: 一般保存在 MARD ...

  9. 10个免费在线逻辑关系图表图形设计制作工具

    图形图像是表达各种逻辑关系最好最简明的方法,各种各样很多场合都需要应用到图像逻辑关系图,例如:教学课件.会议.工程设计以及各种程序.数据库设计等过程中都需要应用到这样的图形关系图.一个有条理简明的图像 ...

最新文章

  1. Application.DoEvents
  2. 基于国家标准的 EndNote 输出样式模板
  3. whatlies包 | 简单玩转词向量可视化
  4. android studio 跨进程,Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用...
  5. Linux系统编程21:基础IO之全缓冲和行缓冲的区别及深刻理解缓冲区及其作用
  6. python3操作excel(xls与xlsx版本的爱恨情仇)
  7. python基础语法手册-python语法手册
  8. 初中级前端开发工程师如何提升个人能力?
  9. FastJson最新.jar下载
  10. 单例模式--懒汉模式和饿汉模式
  11. TPC,TPCC,TPMC(计算机性能衡量指标)
  12. 开源GIS--geos实现空间连接
  13. MySQL 事务隔离级别
  14. AP计算机从绝望到满分-----深圳中学张嘉轩如何说
  15. ROS routeros mikrotik路由器CVE-2018-14847漏洞
  16. Ansys Ensight: 同时打开多个case结果
  17. 弹性盒子(flex)
  18. 一个工程师对潘多拉开发板的使用体验
  19. cod16显示服务器队列,使命召唤16战区
  20. MM模块常用事务代码

热门文章

  1. python毕业设计题目推荐基于Python实现的大学校园短视频社交软件系统-微信小程序[包运行成功]计算机毕业设计
  2. 六西格玛,为质量人的职业发展保驾护航
  3. Winform toolStrip Button大小设置
  4. php require的用法,PHP 中 require 的用法
  5. Android 9.0 https适配问题
  6. 区块链技术影响的 10 个领域
  7. C++常见内存错误及解决方案
  8. delphi 发生内存错误处理方法
  9. 平面设计最新技术发展
  10. Windows XP系统注册表详解