Android BOOT Time 优化

本文介绍了Android启动过程中的优化方法,重点讨论了如何通过裁剪不必要的驱动、打印信息和服务启动项来提高启动速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android BOOT Time 优化
Rocky@20110317

Android的启动和大多数的智能手机设备都一个通病,都是启动比较慢。这里的速度优化并不是从源代码的角度来优化,因为我相信Google已经做了非常多的工作。但是每个人的机器是不一样的。特别是我们做MID,产品差别很大,有必要针对自己的产品做一些裁剪工作,用这个裁剪来优化我们的开机速度。

Android开机流程:

Bootloader
kernel
Init
Zygote
Service manager

具体分析:
Bootloader一般比较难操作,这里也可以尽量少的做一些不必要的延迟操作。

Kernel:
这个地方分两块:
1:减少你系统不需要的Driver。这样Kernel的大小自然就小了。加载速度自然就快了。
2:减少不必要的打印信息。在正式版本中,我们需要把一些调试的信息全部删掉。具体要删除那些,要看情况。这里推荐一篇文章。
http://www.elinux.org/Boot_Time
其中说到的Kernel speedups ,方法有:
Disable Console - Avoid overhead of console output during system startup.
Disable bug and printk - Avoid the overhead of bug and printk. Disadvantage is that you loose a lot of info.
....

个人发现这两点在我们的机器上表现是最为明显的。
随意,在kernel command string 中添加quiet,可以节约kernel启动的10s的启动时间。

具体位置:
/kernel/ make menuconfig
【Boot Options】、【Default kernel command string 】
末尾添加一句
quiet


Init:实际上就是做一些初始化的工作。包括load service ,zygote,下面是具体的介绍
Zygote:
它的源代码在android_tcgit/frameworks/base/core/java/com/android/internal/os/ZygoteInit.java
会做一些preloadClasses ,preloadResources的动作。我们可以通过在开机的时候
adb shell logcat -s Zygote I
查看这个部分的打印信息。可以看出在preloadClasses的时候耗时也是蛮长的。但是不建议修改。否则就是牙膏效益,后面的加载时间更长。有很多的文章讲在这里节约时间。
我奉劝各位还是不要去动它,之所以说到这里,是因为很多的都会说。

Service Manager.
这个装载分成两个部分,一个是frameworks/base/services/java/com/android/server代码装载,一个是在init.rc类似的文件中装载。
记住,删除我们不需要的东西。例如,我们这里根本没有BlueTooth。所以删除和蓝牙相关的项目。




总之,android的启动结构已经优化了很好的了。我们关键的一点就是去掉一些没有必要的东西,例如打印信息,不需要的驱动和服务启动项。

参考资料:

http://www.elinux.org/Boot_Time

http://elinux.org/Improving_Android_Boot_Time

http://blog.youkuaiyun.com/jackyu613/archive/2010/11/30/6044297.aspx

http://elinux.org/Improving_Android_Boot_Time_Outline


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值