术语俗话 --- ART和OAT是什么
基本概念
ART(Android Runtime)
Android 5.0 起替代 Dalvik 的运行时环境,负责执行应用代码。
OAT(Ahead-Of-Time compiled file)
ART 环境下将 dex 字节码预编译为本地机器码后生成的文件格式。
两者的关系简单来说:
ART 是运行时引擎,OAT 是 ART 使用的编译产物格式。
从 Dalvik 到 ART 的演进
text
Dalvik 时代:
.dex → Dalvik 虚拟机逐条解释执行(+ JIT即时编译)
ART 时代:
.dex → dex2oat 编译 → .oat(本地机器码)→ 直接执行
Dalvik 的方式
text
安装APK
↓
classes.dex 通过 dexopt 优化为 .odex(优化后的字节码)
↓
运行时由 Dalvik 虚拟机解释执行 + JIT 编译热点代码
ART 的方式(Android 5.0-6.0)
text
安装APK
↓
classes.dex 通过 dex2oat 编译为 .oat(本地机器码)
↓
运行时直接执行机器码,无需解释
ART 的方式(Android 7.0+,混合模式)
text
安装APK
↓
先不编译,直接解释执行 + JIT
↓
收集热点代码 profile
↓
设备空闲时,dex2oat 根据 profile 编译热点代码为 .oat
免责声明
本文档所有内容仅供安全研究、学术交流与技术学习使用,严禁用于任何未经授权的逆向破解、网络攻击、隐私窃取、恶意软件开发及其他违反《中华人民共和国网络安全法》《数据安全法》等法律法规的行为,使用者应确保已获得目标软件权利人的合法授权并自行承担因使用本文档内容所产生的一切法律责任与后果,作者不对任何直接或间接损害承担任何责任,继续阅读即视为您已知悉并同意上述全部条款。
浙公网安备 33010602011771号