searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Android系统的启动优化之上层OS部分优化

2023-08-16 01:36:47
46
0
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
system/core/rootdir/xxx.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) 其他……
0条评论
0 / 1000
朱****春
17文章数
3粉丝数
朱****春
17 文章 | 3 粉丝
原创

Android系统的启动优化之上层OS部分优化

2023-08-16 01:36:47
46
0
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
system/core/rootdir/xxx.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) 其他……
文章来自个人专栏
Android系统开发
17 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0