google在android8.0新增加了vdex文件,定义如下
artruntime vdex_file.h
// VDEX files contain extracted DEXfiles. The VdexFile class maps the file to
// memory and provides tools foraccessing its individual sections.
//
// File format:
// VdexFile::Header fixed-lengthheader
//
// DEX[0] array of theinput DEX files
// DEX[1] the bytecodemay have been quickened
// ...
// DEX[D]
//
Vdex的文件头定义
struct Header {
public:
Header(uint32_tnumber_of_dex_files_,
uint32_tdex_size,
uint32_tverifier_deps_size,
uint32_tquickening_info_size);
const char*GetMagic() const { return reinterpret_cast<const char*>(magic_); }
const char*GetVersion() const { return reinterpret_cast<const char*>(version_); }
boolIsMagicValid() const;
boolIsVersionValid() const;
bool IsValid()const { return IsMagicValid() && IsVersionValid(); }
uint32_tGetDexSize() const { return dex_size_; }
uint32_tGetVerifierDepsSize() const { return verifier_deps_size_; }
uint32_tGetQuickeningInfoSize() const { return quickening_info_size_; }
uint32_tGetNumberOfDexFiles() const { return number_of_dex_files_; }
static constexpr uint8_t kVdexInvalidMagic[]= { 'w', 'd', 'e', 'x' };
private:
staticconstexpr uint8_t kVdexMagic[] = { 'v', 'd', 'e', 'x' };
staticconstexpr uint8_t kVdexVersion[] = { '0', '0', '5', '