Android 系统(158)---Android O、N 减少占用ROM空间或者加快安装速度
Android O版本、AndroidN版本
1.ROM过大可以通过调整--compiler-filter,减少apk生成odex文件所占据空间的大小,通常来说odex+vdex文件越大,说明dex2oat优化的类越多越彻底,性能也相对较好;
2.Apk安装时间过长可以通过调整--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文件的大小;
--compiler-filter |
Time |
Total size(KB) |
Odex(KB) |
Vdex(KB) |
assume-verified |
3.228s |
36657 |
653 |
36004 |
extract |
2.499s |
36657 |
653 |
36004 |
verify |
7.616s |
36904 |
653 |
36251 |
quicken |
9.539s |
38978 |
717 |
38261 |
space-profile |
7.949s |
38978 |
717 |
38261 |
space |
27.425s |
107608 |
71321 |
36287 |
speed-profile |
7.810s |
38978 |
717 |
38261 |
speed |
52.815s |
107608 |
71321 |
36287 |
everything-profile |
7.415s |
38978 |
717 |
38261 |
everything |
53.364s |
109544 |
73281 |
36263 |
表格统计数据是根据下面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 系统(158)---Android O、N 减少占用ROM空间或者加快安装速度相关推荐
- Android系统架构-[Android取经之路]
摘要:本节主要来讲解Android的系统架构 阅读本文大约需要花费10分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平台设计,欢迎关注我,谢谢! 欢 ...
- android 服务端技术,移动应用服务器端开发(基于JSP技术)-2017 Android系统构架 Android系统构架.docx...
Android系统构架 PAGE 1 目 录 TOC \o "1-3" \h \z \u 一.Android系统构架 1 二.Linux内核层 2 三.系统运行库层 3 (一)系统 ...
- 【android系统】android系统升级流程分析(二)---update升级包分析
接下来我们将通过几篇文章来分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理.今天让我先来分析下升级包update.zip. 一 ...
- 【android系统】android系统升级流程分析(一)---recovery模式中进行update包升级流程分析
今天我们直接来看下android中具体的升级过程是如何的. 升级流程概述 升级的流程图: 升级流程分析 第一步:升级包获取 升级获取可以通过远程下载,也可直接拷贝到指定目录即可. 第二步:准备升级 然 ...
- android log抓取方法,Android系统之Android抓取各种log的方法
Android系统之Android抓取各种log的方法 2018年11月25日 | 萬仟网移动技术 | 我要评论 android之android抓取各种log的方法 1.logcat (四类log b ...
- Window10 系统休眠或睡眠状态恢复-占用磁盘空间 100% 问题以及解决方法
Window10 系统休眠或睡眠状态恢复-占用磁盘空间 100% 问题以及解决方法 系统环境版本 排除问题过程 解决问题 总结 不知从何时开始,电脑就不定期变的非常卡,尤其是笔者平时不关机,下班都是按 ...
- 【Android系统】Android开机时间分析
参看博客: https://www.jianshu.com/p/30fdf86c3462?from=singlemessage ...
- dlna移植android系统,基于Android的DLNA互动视频系统的设计与实现
摘要: 随着人们对智能系统的要求越来越高,为了满足市场需求,相应的一系列Android应用也应运而生.其中,Android手机上的视频播放器便是最具有代表性的应用之一,然而Android自带的多媒体库 ...
- android系统语音合成,android 语音合成报错
发现了2个问题 第一个貌似是复制离线的资源出错了(已经核对过读写等权限): 12-19 19:54:49.739 32006-32159/com.zhanglf.youxuanz I/NonBlock ...
最新文章
- Python Qt GUI设计:QPrinter打印图片类(基础篇—21)
- 基于Opencv实现眼睛控制鼠标
- source ubuntu 退出_Ubuntu如何使用source命令执行文件
- 参加第十六届全国大学生智能车竞赛广东省报名队伍
- PHP设置二维码中间为logo
- 每周一个 Python 模块 | calendar
- (操作系统题目题型总结)第二章:处理器管理
- 类和接口的使用-类和成员可访问性最小化
- 邻居子系统:地址解析协议
- 【计组】计算机乘法运算
- 迅雷跃居全球BT市场第一
- 规则库捕获漏洞信息专用脚本
- TextView Recyclerview省略号相关
- import torch ModuleNotFoundError: No module named ‘torch‘
- 解决OBS录屏软件窗口采集不全的问题
- BlueTooth: 无线技术之争谁将胜出 WiFi、蓝牙还是NFC?
- 低成本快速上链 智臻链开放联盟网络正式对外开放
- 新唐单片机移植RT-Thread,Finsh组件的接口函数编写
- RAD Studio破解补丁合集(2018.12.25)
- 浅析“进位计数制及数制转换”