Android内核开发:系统启动速度优化

转载 2017年01月03日 09:20:21
Android内核开发:系统启动速度优化
2015-06-23 19:40:41
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://ticktick.blog.51cto.com/823160/1664754

在学习新知识的过程中,我一直很推荐结合实战任务去学习,只有经历实战,才能加深对理论知识的理解。《Android内核开发》系列已经写了八篇了,本文就结合前面的内容,给大家布置一个实战任务: 优化Android系统的启动速度。


这里我简单介绍一下优化的基本思路和涉及的文件,具体细节由大家自己在实践去摸索,提高自己Google能力和解决问题的能力。


Android系统的启动优化主要分为三大部分:


(1) Bootloader优化

(2) Linux Kernel的剪裁与优化

(3) Android OS部分的剪裁与优化


本文重点关注Android OS部分的启动优化,值得关注的优化点分别介绍如下:


1. 精简preload的classes和resource


前面介绍过,由于所有的Android应用程序都是从Zygote进程fork出来的,所以为了共享一些class和resourse资源,Zygote进程初始化过程中,会预先加载一些常用的java class和资源文件到进程的内存中,这样其他应用fork出来后就不用再次加载了,从而提高了应用的启动速度。


这个过程是可以精简和优化的,你可以减少一些classes和resource的加载,从而加快系统的启动速度。本过程涉及到的文件:


frameworks/base/preload-classes


frameworks/base/core/res/res/values/arrays.xml


2.  精简native service和java service


前面介绍过,Android OS的启动本质上就是启动一系列的本地服务和Java服务,Android系统的所有功能都是通过这些服务间接提供的。


这些服务有很多并不是必须启动的,根据业务需求可以去掉一些,本过程涉及到的文件:


system/core/rootdir/init.rc


frameworks/base/services/java/com/android/server/SystemServer.java


3.  精简预装的apk文件


系统启动过程中,会扫描系统指定目录下的所有apk文件,这个过程也是非常耗时的,预装的apk文件越少,系统启动速度也就越快,因此,精简预装apk也是优化系统启动速度最重要的手段之一。


要想减少预装的apk文件,则需要分析系统的build文件,将不需要的apk编译选项删除掉,本过程涉及到的文件:


build/target/product/xxxx.mk


device/<company>/<product>/xxxx.mk


vendor/..../xxxx.mk


4.  减少内核的log打印级别


过多的log打印消息会显著地增加系统启动的时间,log打印级别有多处可以调整,推荐修改init.rc文件中的loglevel来改变log打印级别。


system/core/rootdir/init.rc


5.  其他优化手段


上面介绍的都是最常用的优化手段,其实还有很多其他的方法,简单列举如下:


(1) 优化启动动画,降低帧率和图片尺寸


(2) 精简系统,减小boot.img文件大小,可以显著减少启动过程中加载和解压boot.img的时间


(3) 预先创建一些目录和文件,而不是在init过程中创建


(4) 其他……


6.  小结


这里我给出一位国外的高手优化的结果作为比较和参考(我的优化结果只提高了40%的启动速度,远没有达到他的效果):


wKiom1WJRXqRrLCVAAFlKtcg5Fg090.jpg


希望大家能在本博文下留言、微博私信或者发邮件给我,告诉我你优化前后的Android系统的启动速度。


关于Android系统的启动速度优化就介绍到这里了,真心希望初学者们能够动手去实践,在实践中逐渐掌握内核开发的基本流程和技巧,然后慢慢深入理解系统的基本原理和理论知识。有任何疑问或者建议欢迎留言或者来信lujun.hust@gmail.com交流,或者关注我的新浪微博 @卢_俊 获取最新的文章和资讯。


本文出自 “Jhuster的专栏” 博客,请务必保留此出处http://ticktick.blog.51cto.com/823160/1664754

Android开机速度优化简单回顾

Android的开机速度,基本上没人说快的,通常移植完系统后,马上要看的事情就是优化开机时间,以下是简单回忆以下以前做优化的那些事。 开机时间都花在哪? 优化开机时间,通常做的首先是那有有没有BUG,...
  • freshui
  • freshui
  • 2016年12月17日 00:23
  • 6884

关于android开机速度性能方面

android开机,分为三个阶段, 1. 2.linux内核启动,开机动画开始显示 3.开始进入android的世界 4.android部分启动完成,开始初始化一些系统进程 1.Bootloader...
  • poolwater
  • poolwater
  • 2016年07月06日 15:34
  • 2200

浅谈Android开机启动速度优化(含应用程序启动速度优化)

众所周知Android开机启动速度较慢,于是如何加快启动速度便成为一个值得讨论的问题。在查阅过许多资料后(特别是Google Group的android-platform),我整理总结出下面几点基本看...
  • jackyu613
  • jackyu613
  • 2010年11月30日 00:41
  • 58282

Android 8.0 启动速度优化工具

在Android 8.0上面,google进行了启动速度的优化,但是对于开发者来说,追求更快的速度是必须的。 这边就介绍一个android启动速度优化的工具,bootchart。 bootchart在...
  • ChaoY1116
  • ChaoY1116
  • 2017年09月04日 16:12
  • 690

Android 性能优化 冷启动速度优化

前言本篇文章对app启动速度进行优化。先了解 Android 性能优化 基本概念应用是如何启动的,会对此有帮助。1. 应用的启动模式 冷启动 Cold start 当启动应用时,后台没有该应用的进程...
  • u014099894
  • u014099894
  • 2016年11月30日 17:48
  • 1405

Android开机速度优化简单回顾——readahead

Android的开机速度,基本上没人说快的,通常移植完系统后,马上要看的事情就是优化开机时间,以下是简单回忆以下以前做优化的那些事。 开机时间都花在哪? 优化开机时间,通常做的首先是那有有没有BU...
  • lqxandroid2012
  • lqxandroid2012
  • 2017年01月10日 20:08
  • 675

Android 开机启动速度优化-bootchart工具

原文地址;http://blog.csdn.net/jkh753/article/details/12908971 Android 开机启动速度优化 一 在开机启动中,可以借助bootch...
  • YanLai20
  • YanLai20
  • 2015年08月04日 17:05
  • 1741

Android开机速度优化

开机速度优化 主要关注当Java世界起来以后(即zygote起来之后)的开机速度优化。 从zygote到home显示的过程中,有如下几个耗时的过程: 1.preload-class。 ...
  • a87636764
  • a87636764
  • 2015年04月20日 20:14
  • 1181

Android 开机速度优化-----ART 预先优化

Android开机速度 我们知道在L及以后的版本中,当系统升级后,或者恢复出厂设置后,或者第一次开机,其启动时间往往很长,短的有3-4分钟,而长的多达10分钟,那么是原因导致的,...
  • u010164190
  • u010164190
  • 2016年05月20日 17:39
  • 1695

Android 性能优化——启动时间优化指南

启动时间优化毫无疑问,应用的启动速度越快越好。 本文可以帮助你优化应用的启动时间:首先解释启动过程内部机制;然后讨论如何分析启动性能;最后,描述了一些常见的影响启动时间的问题,并就如何解决这些问题给...
  • lgz_ei
  • lgz_ei
  • 2017年04月11日 00:38
  • 1516
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android内核开发:系统启动速度优化
举报原因:
原因补充:

(最多只允许输入30个字)