Android 首次开机优化
2015-11-25 17:16
676 查看
优化工具
优化方向
裁剪不常用的资源
patch oat ODEX优化
参考资源
Android首次开机速度过慢!为了解决这个问题,需要首先了解Android首次开机的时间都消耗在什么地方了!
总结起来步骤如下:
在/system/core/init 下的mk中添加INIT_BOOTCHART:=true 编译控制命令
在BootChart.h中修改# define BOOTCHART 1 这个宏,这个是宏功能开关
用make bootimage 来编译boot,init会编译在boot中,编译成功后,fastboot烧入手机中。
用adb shell echo 120(或者别的数字) > /data/bootchart-start 创建一个/data/bootchart-start文件并写入值,控制采集开始
用adb shell echo 1 > /data/bootchart-stop 来控制Bootchart功能关
优化之前bootchart
优化之后bootchart
可以看出,我们可以通过bootchart清楚的分析出什么地方消耗了首次开机时间!
注意dex2oat进程!
在使用bootchart过程中可能会出错(draw.py,parsing.py,samples.py),尤其是bootchart自带的某些python文件,可以使用本文结尾的附件进行替换,或者对比进行修改!
铃声 –> frameworks/base/data/sound/
字体 –> frameworks/base/data/font/
–> external/xxxx-font
–> build/core/*.mk 中调用的一些ttf资源
裁减掉一些不常用的APP资源
–> LOCAL_OVERRIDES_PACKAGES使用这个属性进行控制
预加载类 和 预加载资源部分 frameworks/base/preloaded-classes
具体代码实现
注:以上绝大部分是可以通过一个统一的mk进行管理的(常见的
在mk文件中添加如下选项(可以考虑在choosecombo的时候设置标志位,使用宏控)!
bootchart Python 文件
优化方向
裁剪不常用的资源
patch oat ODEX优化
参考资源
Android首次开机速度过慢!为了解决这个问题,需要首先了解Android首次开机的时间都消耗在什么地方了!
优化工具
我们可以借助 Bootchart工具进行分析,Using Bootchart on Android总结起来步骤如下:
在/system/core/init 下的mk中添加INIT_BOOTCHART:=true 编译控制命令
在BootChart.h中修改# define BOOTCHART 1 这个宏,这个是宏功能开关
用make bootimage 来编译boot,init会编译在boot中,编译成功后,fastboot烧入手机中。
用adb shell echo 120(或者别的数字) > /data/bootchart-start 创建一个/data/bootchart-start文件并写入值,控制采集开始
用adb shell echo 1 > /data/bootchart-stop 来控制Bootchart功能关
优化之前bootchart
优化之后bootchart
可以看出,我们可以通过bootchart清楚的分析出什么地方消耗了首次开机时间!
注意dex2oat进程!
在使用bootchart过程中可能会出错(draw.py,parsing.py,samples.py),尤其是bootchart自带的某些python文件,可以使用本文结尾的附件进行替换,或者对比进行修改!
优化方向
裁剪不常用的资源
语言 –> build/target/product/languages_full.mk铃声 –> frameworks/base/data/sound/
字体 –> frameworks/base/data/font/
–> external/xxxx-font
–> build/core/*.mk 中调用的一些ttf资源
裁减掉一些不常用的APP资源
–> LOCAL_OVERRIDES_PACKAGES使用这个属性进行控制
预加载类 和 预加载资源部分 frameworks/base/preloaded-classes
具体代码实现
frameworks/base/core/java/com/android/internal/os/ZygoteInit.java
注:以上绝大部分是可以通过一个统一的mk进行管理的(常见的
/device/vendor/product/product.mk)
patch oat & ODEX优化
首次开机消耗的绝大部分时间实在PMS中的dex2oat过程中;因此我们考虑在编译过程中就将apk转化成为odex,这样首次开机过程中PMS就不在进行dex2oat的动作,进而可以提升首次开机时间!在mk文件中添加如下选项(可以考虑在choosecombo的时候设置标志位,使用宏控)!
WITH_DEXPREOPT := true TH_DEXPREOPT=true WITH_ART_SMALL_MODE=true WITH_ART_USE_OPTIMIZING_COMPILER=true ADDITIONAL_BUILD_PROPERTIES += ro.xxxx=1
参考资源
Android Art configbootchart Python 文件
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories