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

  • 2023/06/28

哈喽,大家好,我是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:

人工客服
(售后/吐槽/合作/交友)
  • 器件型号:ASEMPC-25.000MHZ-Z-T
    • 数量 1
    • 建议厂商 Abracon Corporation
    • 器件描述 MEMS OSC XO 25.0000MHZ CMOS SMD
    • 参考价格 $2.46
    • 风险等级
    • ECAD模型

      ECAD模型

      下载ECAD模型
    • 数据手册
    • 查看更多信息
  • 器件型号:NX2012SA-32.768K-STD-MUB-1
    • 数量 1
    • 建议厂商 Nihon Dempa Kogyo Co Ltd
    • 器件描述 Parallel - Fundamental Quartz Crystal, 0.032768MHz Nom, ROHS COMPLIANT PACKAGE-2
    • 参考价格 $7.18
    • 风险等级
    • ECAD模型
    • 数据手册
    • 查看更多信息
  • 器件型号:HFBR-2531Z
    • 数量 1
    • 建议厂商 Foxconn
    • 器件描述 Receiver, Through Hole Mount, ROHS COMPLIANT PACKAGE
    • 参考价格 $14.63
    • 风险等级
    • ECAD模型
    • 数据手册
    • 查看更多信息

相关资讯

  1. 1.
  2. 2.
  3. 3.
  4. 4.
  5. 5.
  6. 6.
  7. 7.
  8. 8.
  9. 9.
  10. 10.
  11. 11.
  12. 12.
  13. 13.
  14. 14.
  15. 15.
  16. 16.
  17. 17.
  18. 18.
  19. 19.
  20. 20.
查看全部20条内容