`
yidongkaifa
  • 浏览: 4059920 次
文章分类
社区版块
存档分类
最新评论

Android开机优化思路

 
阅读更多

开机优化,有uboot优化,kenel优化,android核心层优化。


uboot优化:

1) setenv bootcmd1 "nand read.jffs2 0x62000000 kernel 0x180000 ; bootm 62000000"
这样 load内核的时候 从以前0x300000的3M->1.5M 省1S
2)setenv bootdelay 1 从2变为0 加上CONFIG_ZERO_BOOTDELAY_CHECK
3) quiet=1
bootargs=root=/dev/mtdblock4 rootfstype=yaffs2 console=ttyDW0 mem=64M mtdparts=dwnand:3m(kernel),3m(splash),64m(rootfs),-(userdata);dwflash.0:384k(u-boot),128k(u-boot_env) quiet
加上quiet 省不到1S
4)启动的时候不扫描整个芯片的坏块,因为uboot只会用到kernel和splash区,只需要检验这两个区的坏块。
可以省不到 0.2s ,没什么明显的改进
5) 将环境变量verify 设置为n ,这样load kernel 后,不会去计算校验 kernel image的checksum
6)开始打印公司 这些可以去掉 ,在这里还有delay ,以及其他的一些不必要的打印 ,一起去掉
8)在环境变量区的末尾, 存有CRC,启动的时候会校验CRC ,去掉可以省一些时间
9)把一些驱动的初始化在正常启动的时候不执行,当用户按了键,进入uboot命令模式的时候执行
10) 修改SDRAM控制器时序


kernel优化:
1 修改内核img的打包方式,无压缩内核启动时间比较快,缺点是占用多一点的空间
2 减少一些不必要的内核驱动的sleep时间,减少log打印信息
3 文件系统的类型,比如yaffs2 ubifs各有各自的好处


android核心层优化:

在linux内核启动完后,要执行init进程,这是用户空间的第一个进程。在这个进程里要去解析init.rc的配置文件,去加载我们的看机启动项。解析配置文件过程最主要启动一个servicemanager进程,和启动一个zygote,servicemanger主要作用就是管理我们的系统service,它启动完成后变成一个在后台持续运行的守护进程,不断的去读取binder设备,看有没有访问系统service的请求。

zygote进程就是我们android虚拟机的诞生地,在zygote进程里调用了一个叫app_runtime,同时调用了app_runtime的start方法,这个过程就是创建我们的dialivk虚拟机同时启动我们的systemservice,在启动了一大堆的systemservice(eg:activitymanagerservice,powermanagerservice................)后在把它注册到servicemanager里面.

1.采用check point方式每次直接将zygote还原到完成类加载的阶段避开频繁的类操作可以提高速度。

利用BLCR加快android的启动过程:http://blog.csdn.net/shuaiff/archive/2010/09/19/5894646.aspx

2.在启动systemserver的时候,减少我们的service启动项,剔除我们不需要的一些services

3.越少的apk安装,越短的启动时间,减少scan packages花费的时间。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics