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空间或者加快安装速度相关推荐

  1. Android 系统(158)---Android O、N 减少占用ROM空间或者加快安装速度

    Android O.N版本修改dex2oat编译选项,减少占用ROM空间或者加快安装速度 Android O版本.AndroidN版本 1.ROM过大可以通过调整--compiler-filter,减 ...

  2. Android 系统(36)---Android O、N版本修改dex2oat编译选项

    Android O.N版本修改dex2oat编译选项,减少占用ROM空间或者加快安装速度 内容 (2018-02-09) Android O版本.AndroidN版本 1.ROM过大可以通过调整--c ...

  3. Android 9.0版本修改Launcher图标默认为圆形

    [DESCRIPTION] 客户要求修改Launcher所有图标默认为圆形图标 [SOLUTION] 设置中打开开发者选项后,我们可以发现长按主界面空白处会弹出三个选项,选择Home settings ...

  4. 【Android 逆向】Android 逆向通用工具开发 ( Android 平台运行的 cmd 程序类型 | Android 平台运行的 cmd 程序编译选项 | 编译 cmd 可执行程序 )

    文章目录 一.Android 平台运行的 cmd 程序类型 二.Android 平台运行的 cmd 程序编译选项 三.编译 Android 平台的 cmd 可执行程序 一.Android 平台运行的 ...

  5. Android 系统各版本新特性总结

    Android 4.0 Space 留白 PopupMenu GlidLayout 网格布局 Android 5.0 MaterialDesign设计风格 Material Theme Meteria ...

  6. Android代号、版本、API版本号

    原来Android系统代号是26个字母顺序l排列的,请原谅我知识的浅薄: 代号 Name 版本号 API版本号 发布时间 馅饼 Pie 9.0 28 2018-08 奥利奥 Oreo 8.1 27 2 ...

  7. Android SDK各个版本API的特性及兼容性(Dalvik/ART)

    Android最新support包v4,v7,v13,v14,v17等 - http://download.csdn.net/download/u012808234/9502763 Android A ...

  8. Android Gradle 插件版本说明

    Android Studio 构建系统以 Gradle 为基础,并且 Android Gradle 插件添加了几项专用于构建 Android 应用的功能.虽然 Android 插件通常会与 Andro ...

  9. Android反编译apk修改版本号重新打包签名详细教程(超详细)

    文章目录 一.反编译工具介绍 1:apktool 获取资源文件 2:dex2jar(源码文件获取) 3:jd-gui 查看APK中classes.dex转化成出的jar文件,即源码文件 二.apkto ...

  10. 【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 加载分析 一. ...

最新文章

  1. 被swoole坑哭的PHP程序员
  2. 解决 Virtual PC 在 XP PAE模式下无法运行的问题
  3. 揭秘富人的22种习惯与风格
  4. 初探swift语言的学习笔记七(swift 的关健词)
  5. 基于RBAC的权限设计模型
  6. Sublime Text 3 安装及插件推荐
  7. [html] 如何设置打印尺寸?
  8. canal kafka 环境搭建
  9. int 转string
  10. 20191116每日一句
  11. 【git学习】git项目管理工具
  12. pyecharts在jupyter notebook中使用报错
  13. 一些常用的IOS开发网站
  14. 免费的微信编辑器插件调用
  15. 如何让vnc控制由默认的twm界面改为gnome?(转)
  16. Matlab 统计不同元素个数
  17. 超具性价比的学生神器,讯飞智能录音笔给足惊喜
  18. 兔子--sdk版本与api的对应关系
  19. 猴子搬香蕉Java实现,儿童编程游戏CodeMonkey,让你的小猴子不停地吃香蕉
  20. Steering Behaviors

热门文章

  1. 大型网站架构技术演进(史上最全)
  2. 工程力学(16)—弯曲应力
  3. c8t6高电平电压_什么是高电平和低电平?
  4. 一个程序员未来5年的规划
  5. HTML5CSS3基础:CSS选择器与其伪类(6)
  6. 支付宝APP退款功能开发
  7. apache与tomcat动静分离
  8. html职业性格测试,MBTI职业性格测试专业版
  9. linux 文件大小单位显示
  10. 简约至上交互式设计四策略