• 优化工具
  • 优化方向
    • 裁剪不常用的资源
    • patch oat ODEX优化
  • 参考资源

Android首次开机速度过慢!为了解决这个问题,需要首先了解Android首次开机的时间都消耗在什么地方了!

优化工具

我们可以借助 Bootchart工具进行分析,Using Bootchart on Android

总结起来步骤如下:

  1. 在/system/core/init 下的mk中添加INIT_BOOTCHART:=true 编译控制命令
  2. 在BootChart.h中修改# define BOOTCHART 1 这个宏,这个是宏功能开关
  3. 用make bootimage 来编译boot,init会编译在boot中,编译成功后,fastboot烧入手机中。
  4. 用adb shell echo 120(或者别的数字) > /data/bootchart-start 创建一个/data/bootchart-start文件并写入值,控制采集开始
  5. 用adb shell echo 1 > /data/bootchart-stop 来控制Bootchart功能关

优化之前bootchart


优化之后bootchart

可以看出,我们可以通过bootchart清楚的分析出什么地方消耗了首次开机时间!
注意dex2oat进程!

在使用bootchart过程中可能会出错(draw.py,parsing.py,samples.py),尤其是bootchart自带的某些python文件,可以使用本文结尾的附件进行替换,或者对比进行修改!

优化方向

裁剪不常用的资源

  1. 语言 –> build/target/product/languages_full.mk
  2. 铃声 –> frameworks/base/data/sound/
  3. 字体 –> frameworks/base/data/font/
    –> external/xxxx-font
    –> build/core/*.mk 中调用的一些ttf资源
  4. 裁减掉一些不常用的APP资源
    –> LOCAL_OVERRIDES_PACKAGES使用这个属性进行控制
  5. 预加载类 和 预加载资源部分 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 := trueTH_DEXPREOPT=trueWITH_ART_SMALL_MODE=trueWITH_ART_USE_OPTIMIZING_COMPILER=trueADDITIONAL_BUILD_PROPERTIES += ro.xxxx=1

参考资源

Android Art config
bootchart Python 文件

更多相关文章

  1. 【Android】TextView动态设置Drawable资源
  2. Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值
  3. android UI优化http://hi.baidu.com/cynthia1101/blog/item/3c2b
  4. Android应用程序资源——Drawable资源概述
  5. Android(安卓)Toast优化,不看别后悔
  6. Android支持的资源
  7. android私有文件资源文件的读取
  8. Android(安卓)应用启动速度优化
  9. android开机动画(bootanimation)

随机推荐

  1. Android(安卓)xml文件 SAX
  2. 软键盘挤压UI界面问题
  3. Android(安卓)Material Design控件之Floa
  4. android settings学习笔记(二)-细节分析
  5. Android-Module:ToggleButton常用XML属性
  6. Kotlin学习笔记——从搭建环境开始
  7. 关于Android如何集成QQ登录及分享
  8. Android(安卓)共享元素动画,返回时会闪一
  9. andoird拨号流程简单解析
  10. Android自定义UI实战(基础篇1)---组合控