Android O、N版本修改dex2oat编译选项,减少占用ROM空间或者加快安装速度
Android O版本、AndroidN版本
1.ROM过大可以通过调整–compiler-filter,减少apk生成odex文件所占据空间的大小,通常来说odex+vdex文件越大,说明dex2oat优化的类越多越彻底,性能也相对较好;
2.Apk安装时间过长可以通过调整–compiler-filter,加快安装;
解决方案:
修改dex2oat的–compiler-filter选项;
oat_location_为要修改apk的关键字,通常使用包名,比如微信:com.tencent.mm;
/art/dex2oat/dex2oat.cc
void ParseArgs(int argc, char** argv) {
original_argc = argc;original_argv = argv;InitLogging(argv, Runtime::Abort);// Skip over argv[0].argv++;argc--;if (argc == 0) {Usage("No arguments specified");}
……
} else if (option.starts_with("--dirty-image-objects=")) {dirty_image_objects_filename_ = option.substr(strlen("--dirty-image-objects=")).data();} else if (!compiler_options_->ParseCompilerOption(option, Usage)) {Usage("Unknown argument %s", option.data());}}/** MTK begin */if(oat_location_ != "" && (oat_location_.find("mtk14456") != std::string::npos || oat_location_.find("com.tencent.mm")!= std::string::npos)){LOG(INFO) << "MTK oat_location_=" << oat_location_ << ",SetCompilerFilter=CompilerOptions::kQuicken";compiler_options_->SetCompilerFilter(CompilerFilter::kQuicken);}/** MTK end */ProcessOptions(parser_options.get());// Insert some compiler things.InsertCompileOptions(argc, argv);
}
下面以Android O版本,微信6.6.2为例:
步骤:
1.下载weixin.apk,重命名为weixin.zip;解压缩,把所有的dex文件push到sdcard
2.adb shell,然后执行下面的命令:
./system/bin/dex2oat --oat-file=/sdcard/mtk14456tools_everything.odex --dex-file=/sdcard/classes.dex --dex-file=/sdcard/classes2.dex --dex-file=/sdcard/classes3.dex --dex-file=/sdcard/classes4.dex --dex-file=/sdcard/classes5.dex --compiler-filter=everything
–compiler-filter参数如下:
–compiler-filter=(assume-verified|extract|verify|quicken|space-profile|space|speed-profile|speed|everything-profile|everything)
通过上面可以得出下面数据:
Time为安装apk时dex2oat的时间;
Odex表示生成odex文件的大小;
Vdex表示生成vdex文件的大小;
表格统计数据是根据下面log和生成在sdcard的odex和vdex得出:
01-01 00:33:58.596 4332-4332/? I/dex2oat: StrippedCommandLine:./system/bin/dex2oat --oat-file=/sdcard/mtk14456tools_everything.odex --dex-file=/sdcard/classes.dex --dex-file=/sdcard/classes2.dex --dex-file=/sdcard/classes3.dex --dex-file=/sdcard/classes4.dex --dex-file=/sdcard/classes5.dex --compiler-filter=everything
01-01 00:34:51.958 4332-4332/? I/dex2oat: dex2oat took 53.364s (341.743s cpu) (threads: 8) arena alloc=27MB (28629200B) java alloc=24MB (25341840B) native alloc=128MB (135004032B) free=29MB (31195264B)
Android O、N版本修改dex2oat编译选项,减少占用ROM空间或者加快安装速度相关推荐
- Android 系统(158)---Android O、N 减少占用ROM空间或者加快安装速度
Android O.N版本修改dex2oat编译选项,减少占用ROM空间或者加快安装速度 Android O版本.AndroidN版本 1.ROM过大可以通过调整--compiler-filter,减 ...
- Android 系统(36)---Android O、N版本修改dex2oat编译选项
Android O.N版本修改dex2oat编译选项,减少占用ROM空间或者加快安装速度 内容 (2018-02-09) Android O版本.AndroidN版本 1.ROM过大可以通过调整--c ...
- Android 9.0版本修改Launcher图标默认为圆形
[DESCRIPTION] 客户要求修改Launcher所有图标默认为圆形图标 [SOLUTION] 设置中打开开发者选项后,我们可以发现长按主界面空白处会弹出三个选项,选择Home settings ...
- 【Android 逆向】Android 逆向通用工具开发 ( Android 平台运行的 cmd 程序类型 | Android 平台运行的 cmd 程序编译选项 | 编译 cmd 可执行程序 )
文章目录 一.Android 平台运行的 cmd 程序类型 二.Android 平台运行的 cmd 程序编译选项 三.编译 Android 平台的 cmd 可执行程序 一.Android 平台运行的 ...
- Android 系统各版本新特性总结
Android 4.0 Space 留白 PopupMenu GlidLayout 网格布局 Android 5.0 MaterialDesign设计风格 Material Theme Meteria ...
- Android代号、版本、API版本号
原来Android系统代号是26个字母顺序l排列的,请原谅我知识的浅薄: 代号 Name 版本号 API版本号 发布时间 馅饼 Pie 9.0 28 2018-08 奥利奥 Oreo 8.1 27 2 ...
- Android SDK各个版本API的特性及兼容性(Dalvik/ART)
Android最新support包v4,v7,v13,v14,v17等 - http://download.csdn.net/download/u012808234/9502763 Android A ...
- Android Gradle 插件版本说明
Android Studio 构建系统以 Gradle 为基础,并且 Android Gradle 插件添加了几项专用于构建 Android 应用的功能.虽然 Android 插件通常会与 Andro ...
- Android反编译apk修改版本号重新打包签名详细教程(超详细)
文章目录 一.反编译工具介绍 1:apktool 获取资源文件 2:dex2jar(源码文件获取) 3:jd-gui 查看APK中classes.dex转化成出的jar文件,即源码文件 二.apkto ...
- 【Android 安全】DEX 加密 ( 不同 Android 版本的 DEX 加载 | Android 8.0 版本 DEX 加载分析 | Android 5.0 版本 DEX 加载分析 )
文章目录 一.不同版本的 DEX 加载 1.Android 8.0 版本 DEX 加载分析 2.Android 6.0 版本 DEX 加载分析 3.Android 5.0 版本 DEX 加载分析 一. ...
最新文章
- 被swoole坑哭的PHP程序员
- 解决 Virtual PC 在 XP PAE模式下无法运行的问题
- 揭秘富人的22种习惯与风格
- 初探swift语言的学习笔记七(swift 的关健词)
- 基于RBAC的权限设计模型
- Sublime Text 3 安装及插件推荐
- [html] 如何设置打印尺寸?
- canal kafka 环境搭建
- int 转string
- 20191116每日一句
- 【git学习】git项目管理工具
- pyecharts在jupyter notebook中使用报错
- 一些常用的IOS开发网站
- 免费的微信编辑器插件调用
- 如何让vnc控制由默认的twm界面改为gnome?(转)
- Matlab 统计不同元素个数
- 超具性价比的学生神器,讯飞智能录音笔给足惊喜
- 兔子--sdk版本与api的对应关系
- 猴子搬香蕉Java实现,儿童编程游戏CodeMonkey,让你的小猴子不停地吃香蕉
- Steering Behaviors