我在Android中找到了这段代码:
bool DexFile::OpenFromZip(const ZipArchive& zip_archive, const std::string& location,
std::string* error_msg, std::vector<const DexFile*>* dex_files) {
ZipOpenErrorCode error_code;
std::unique_ptr<const DexFile> dex_file(Open(zip_archive, kClassesDex, location, error_msg,
&error_code));
if (dex_file.get() == nullptr) {
return false;
} else {
// Had at least classes.dex.
dex_files->push_back(dex_file.release());
// Now try some more.
size_t i = 2;
while (i < 100) {
// We could try to avoid std::string allocations by working on a char array directly. As we
// do not expect a lot of iterations, this seems too involved and brittle.
std::string name = StringPrintf("classes%zu.dex", i);
std::string fake_location = location + ":" + name;
std::unique_ptr<const DexFile> next_dex_file(Open(zip_archive, name.c_str(), fake_location,
error_msg, &error_code));
if (next_dex_file.get() == nullptr) {
if (error_code != ZipOpenErrorCode::kEntryNotFound) {
LOG(WARNING) << error_msg;
}
break;
} else {
dex_files->push_back(next_dex_file.release());
}
i++;
}
return true;
来自https://android.googlesource.com/platform/art/+/master/runtime/dex_file.cc主人
这是否意味着如果APK在根目录中有多个dex,dex2oat会在使用ART时将所有DEX变成OAT吗?
安装apk时如何将所有dex转为燕麦?
答案 0 :(得分:2)
这是否意味着如果APK在根目录中有多个dex,则dex2oat将全部转为 使用ART时可以使用DEX吗?
是。燕麦文件结构&#34;包含&#34;许多dex文件:
图片取自Paul Sabanal的slides。
现在,我在安装apk时如何将所有dex转为燕麦。
这在安装过程中自动完成。