快速理清 .dex、.odex、ART、AOT、OAT 逻辑关系
目的
理清 .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 逻辑关系相关推荐
- Android执行时ART载入OAT文件的过程分析
在前面一文中,我们介绍了Android执行时ART,它的核心是OAT文件.OAT文件是一种Android私有ELF文件格式,它不仅包括有从DEX文件翻译而来的本地机器指令.还包括有原来的DEX文件内容 ...
- Unity新项目如何快速理清顶层代码结构
Unity新项目如何快速理清顶层代码结构 半路上手新项目时弄懂scene切换流程是有必要的,scene切换可以说是unity最上层的代码资源结构 思路 首先我们在入口scene(第一个scene)中添 ...
- 通过简单例子 | 快速理清 UML类图中六大关系
类与类之间的六大关系 泛化 ( Generalization ) -> 表继承关系 实现 ( Realization ) 关联 ( Association ) 聚合 ( Aggregation ...
- 理清Activity、View及Window之间关系
我的简书同步发布:理清Activity.View及Window之间关系 转载请注明出处:[huachao1001的专栏:http://blog.csdn.net/huachao1001] View.W ...
- python使用缩进来体现代码之间的逻辑关系-python使用缩进来体现代码之间的逻辑关系吗?...
对,python使用缩进来体现代码之间的逻辑关系,对缩进的要求非常严格.Python语言通过缩进来组织代码块,这是Python的强制要求.在代码前放置空格来缩进语句即可创建语句块,语句块中的每行必须是 ...
- python中控制代码块逻辑关系_一、Python基础知识
1.1 Python简介 (1)解释型语言 解释型语言在运行程序的时候才逐行翻译.运行. ①优点: 有良好的平台兼容性,在任何环境中都可以运行(安装了解释器)灵活,修改代码的时候直接修改就可以,可以快 ...
- python使用缩进来体现-python使用缩进来体现代码之间的逻辑关系吗?
对,python使用缩进来体现代码之间的逻辑关系,对缩进的要求非常严格.Python语言通过缩进来组织代码块,这是Python的强制要求.在代码前放置空格来缩进语句即可创建语句块,语句块中的每行必须是 ...
- SAP库存表之间的逻辑关系
SAP库存表之间的逻辑关系 转载于SAP学习门户网,原文链接: http://www.sap6.com/learn/mm/073504302015/3370.html 当前库存: 一般保存在 MARD ...
- 10个免费在线逻辑关系图表图形设计制作工具
图形图像是表达各种逻辑关系最好最简明的方法,各种各样很多场合都需要应用到图像逻辑关系图,例如:教学课件.会议.工程设计以及各种程序.数据库设计等过程中都需要应用到这样的图形关系图.一个有条理简明的图像 ...
最新文章
- Application.DoEvents
- 基于国家标准的 EndNote 输出样式模板
- whatlies包 | 简单玩转词向量可视化
- android studio 跨进程,Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用...
- Linux系统编程21:基础IO之全缓冲和行缓冲的区别及深刻理解缓冲区及其作用
- python3操作excel(xls与xlsx版本的爱恨情仇)
- python基础语法手册-python语法手册
- 初中级前端开发工程师如何提升个人能力?
- FastJson最新.jar下载
- 单例模式--懒汉模式和饿汉模式
- TPC,TPCC,TPMC(计算机性能衡量指标)
- 开源GIS--geos实现空间连接
- MySQL 事务隔离级别
- AP计算机从绝望到满分-----深圳中学张嘉轩如何说
- ROS routeros mikrotik路由器CVE-2018-14847漏洞
- Ansys Ensight: 同时打开多个case结果
- 弹性盒子(flex)
- 一个工程师对潘多拉开发板的使用体验
- cod16显示服务器队列,使命召唤16战区
- MM模块常用事务代码