加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

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

09/21 10:55
4.7万
阅读需 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模型 风险等级 参考价格 更多信息
VSC8504XKS-05 1 Microchip Technology Inc Ethernet Transceiver
暂无数据 查看
S29JL032J70TFI313 1 Cypress Semiconductor Flash, 2MX16, 70ns, PDSO48, TSOP-48
$30.84 查看
RMLV0808BGSB-4S2#AA0 1 Renesas Electronics Corporation 8Mb Advanced LPSRAM (1024k word x 8bit), TSOP(44), /Tray

ECAD模型

下载ECAD模型
$6.54 查看
谷歌

谷歌

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

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

查看更多

相关推荐

电子产业图谱

记录和分享C/C++、Linux、ARM、Android、IoT相关知识。技术相伴于生活和成长,愿你我永为少年,心中有火,眼中有光,始保热情。