Android dex, odex, oat, vdex, art文件介绍

本文详细介绍了Android应用程序从Java源代码到运行时的转换过程,包括DEX文件、VDEX、ODEX/OAT和ART的生成。重点讨论了AOT和JIT编译的概念,以及它们如何加速应用启动和运行。在Android 8.0之后,更新jar包需要同时替换相关的ODEX、VDEX和ART文件以确保改动生效。
摘要由CSDN通过智能技术生成

下图可以简化将Java源转换为OAT的过程:
在这里插入图片描述

.dex

Dalvik虚拟机字节码文件

.vdex

其中包含APK的未压缩DEX代码,以及一些旨在加快验证速度的元数据

.odex .oat

// JIT,Just-in-time,即时编译,边运行边编译;
// AOT,Ahead Of Time,提前编译,指运行前编译。
其中包含APK中已经过AOT编译的方法代码。
原始DEX文件(例如classes.dex)被转换为另一个包含本机代码的文件。这个新文件通常具有.odex。.oat扩展名,并由ELF格式包装。

.art

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

apk生成

./priv-app/MediaProvider/MediaProvider.apk
./priv-app/MediaProvider/oat/arm64/MediaProvider.vdex
./priv-app/MediaProvider/oat/arm64/MediaProvider.odex

jar包生成

./framework/services.jar
./framework/oat/arm64/services.odex
./framework/oat/arm64/services.vdex
./framework/oat/arm64/services.art

bootjar生成

./framework/boot.vdex
./framework/arm/boot.vdex
./framework/arm/boot.oat
./framework/arm/boot.art
./framework/arm64/boot.vdex
./framework/arm64/boot.oat
./framework/arm64/boot.art

Android8.0以后修改代码替换jar包后无作用,相应的odex.vdex. art相关的也需要替换

https://lief.quarkslab.com/doc/latest/tutorials/10_android_formats.html
https://source.android.com/devices/tech/dalvik/configure

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值