• 正文
  • 推荐器件
  • 相关推荐
申请入驻 产业图谱

android开发带有odex, oat, vdex, art等后缀的文件,都是什么含义?

2024/09/21
4.5万
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

哈喽,大家好,我是LittleG。

虽然我主要是做底层驱动开发,但平时经常会看到android应用编译出来带有odex, oat, vdex, art等后缀的文件,不明其义,比较困惑,所以专门查阅整理学习了下,写篇文章记录一下。

ref:

https://blog.csdn.net/u010164190/article/details/103328654

https://lief.quarkslab.com/doc/latest/tutorials/10_android_formats.html

有关odex, oat, vdex, art等后缀的文件说明:

1.dex
java程序编译成class后,dx工具将所有class文件合成一个dex文件,dex文件是jar文件大小的50%左右.

 
2.odex(Android5.0之前)全称:Optimized DEX;即优化过的DEX.
Android5.0之前APP在安装时会进行验证和优化,为了校验代码合法性及优化代码执行速度,验证和优化后,会
产生ODEX文件,运行Apk的时候,直接加载ODEX,避免重复验证和优化,加快了Apk的响应时间.
注意:优化会根据不同设备上Dalvik虚拟机版本、Framework库的不同等因素而不同,在一台设备上被优化过
的ODEX文件,拷贝到另一台设备上不一定能够运行。

 
3.oat(Android5.0之后)
oat是ART虚拟机运行的文件,是ELF格式二进制文件,包含DEX和编译的本地机器指令,oat文件包含DEX文件,因此比ODEX文件占用空间更大。
Android5.0以后在编译的时候(此处指系统预制app,如果通过adb install或者商店安装,在安装时
dex2oat把dex编译为odex的ELF格式文件)dex2oat默认会把classes.dex翻译成本地机器指令,生成ELF格
式的OAT文件,ART加载OAT文件后不需要经过处理就可以直接运行,它在编译时就从字节码装换成机器码了,因
此运行速度更快。不过android5.0之后oat文件还是以.odex后缀结尾,但是已经不是android5.0之前的文件
格式,而是ELF格式封装的本地机器码.可以认为oat在dex上加了一层壳,可以从oat里提取出dex.

 
4.vdex
Android8.0以后加入的,包含APK的未压缩DEX代码,另外还有一些旨在加快验证速度的元数据。

 
5.art (optional)
包含APK中列出的某些字符串和类的ART内部表示,用于加快应用启动速度。

 
注意:Android5.0以后在/data/dalvik-cache目录下的.dex文件已经不是android5.0之前的dex文件,
它是ELF文件,可以使用file命令查看如下:

 
# file system@app@Camera2@Camera2.apk@classes.dex
system@app@Camera2@Camera2.apk@classes.dex: ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, stripped

以下是关于OAT的形成图解:

ELF格式oat :

java to oat:

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
JS28F128J3F75A 1 Micron Technology Inc Flash, 8MX16, 75ns, PDSO56, 14 X 20 MM, LEAD FREE, TSOP-56
$12.8 查看
DP83848CVVX/NOPB 1 Texas Instruments Commercial temperature, 10/100-Mbps Ethernet PHY transceiver with SNI interface & JTAG support 48-LQFP 0 to 70

ECAD模型

下载ECAD模型
$4.35 查看
ADL5561ACPZ-R7 1 Analog Devices Inc 2.9 GHz Ultralow Distortion RF/IF Differential Amplifier

ECAD模型

下载ECAD模型
$9.28 查看
谷歌

谷歌

谷歌公司(Google Inc.)成立于1998年9月4日,由拉里·佩奇和谢尔盖·布林共同创建,被公认为全球最大的搜索引擎公司。谷歌是一家位于美国的跨国科技企业,业务包括互联网搜索、云计算、广告技术等,同时开发并提供大量基于互联网的产品与服务,其主要利润来自于关键词广告等服务。

谷歌公司(Google Inc.)成立于1998年9月4日,由拉里·佩奇和谢尔盖·布林共同创建,被公认为全球最大的搜索引擎公司。谷歌是一家位于美国的跨国科技企业,业务包括互联网搜索、云计算、广告技术等,同时开发并提供大量基于互联网的产品与服务,其主要利润来自于关键词广告等服务。收起

查看更多

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录