dex2oat流程
2018-01-12 本文已影响0人
dumphex
Overview
-
source
- art/dex2oat.cc
- art/compiler/driver/compiler_options.h
- art/compiler/driver/compiler_options.cc
- art/compiler/driver/compiler_driver.h
- art/compiler/driver/compiler_driver-inl.h
- art/compiler/driver/compiler_driver.cc
- art/compiler/oat_writer.h
- art/compiler/oat_writer.cc
- art/compiler/elf_writer.h
- art/compiler/image_writer.h
- art/compiler/image_writer.cc
-
数据结构
- class Dex2Oat
- class CompilerOptions
- class CompilerDriver
dex2oat工作流程
函数调用
dex2oat.png抓取的systrace(app安装)
dex2oat_systrace.png几点说明
-
dex2oat本身的代码逻辑,涵盖了boot image/app安装/app PGC等多个应用场景.
-
boot image
- 若dex2oat未指定--compiler-filter参数, 则默认的 compiler filter是CompilerFilter::kDefaultCompilerFilter,即kSpeed
- 文件名扩展
-
boot class path中的第一个jar文件会被跳过,即/system/framework/core-oj.jar, 它会被编译成boot.art/boot.oat/boot.vdex
-
其它dex location文件名则要扩展
- 前缀为"boot-"
- 中间为文件名
- 后缀为".art"/".oat"/".vdex"
-
art文件统一存储到image_filenames_
-
oat文件统一存储到oat_filenames_
-
vdex文件统一存储到vdex_files_
-
-
不论是verify还是compile阶段,dex2oat都是按照dex/class/method的顺序去做相应的verify/compile工作.