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.csdn.net/jackyu613/archive/2010/11/30/6044297.aspx

http://elinux.org/Improving_Android_Boot_Time_Outline

更多相关文章

  1. Android(安卓)4.0 捕获Home键
  2. Android读取工程根目录下文件内容
  3. 如何过滤Android(安卓)offline log
  4. Android定位功能
  5. Android图灵聊天机器人-薇尔莉特
  6. 【Android】 ANR异常及traces信息解析
  7. Android之AlarmManager(全局定时器/闹钟)指定时长或以周期形式执
  8. 7种形式的Android(安卓)Dialog使用举例
  9. 如何修改Android系统默认时间

随机推荐

  1. Android按钮美化
  2. 解决WARNING: APP_PLATFORM android-19 i
  3. Android用户界面与布局
  4. 【eoeAndroid社区索引】android 条形码的
  5. Android应用程序开发入门
  6. android底部栏中间按钮突出
  7. Android(安卓)输入限制
  8. android adb shell 命令大全
  9. android studio 编译的时候出现的错误和
  10. 实现Android简单动画旋转案例