admin 管理员组

文章数量: 1184232


2024年4月20日发(作者:数据库连接失败dbnetlib)

Android启动过程优化

一、Android启动过程

首先,android的启动过程如下图所示:

图1 android的启动过程

1. Init进程的启动

init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开

始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序

init的方式,完成引导进程。init始终是第一个进程。

启动过程就是代码init.c中main函数执行过程:systemcoreinitinit.c,在函数

中执行了:文件夹建立,挂载,rc文件解析,属性设置,启动服务,执行动作,socket监

听……

2. ServiceManager启动

ServiceManager用来管理系统中所有的binder service,不管是本地的c++实现的还

是java语言实现的都需要这个进程来统一管理,最主要的管理就是,注册添加服务,获取

服务。所有的Service使用前都必须先在servicemanager中进行注册。

3. Zygote进程的启动

Zygote这个进程是非常重要的一个进程,Zygote进程的建立是真正的Android运行空

间,初始化建立的Service都是Navtive service。

4. SystemServer启动

SystemServer进程是zygote孵化出的第一个进程,该进程是从的

main()函数中调用 startSystemServer()开始的。与启动普通进程的差别在于,zygote类

为启动SystemServer提供了专门的函数 startSystemServer(),而不是使用标准的

forAndSpecilize()函数,同时,SystemServer进程启动后首先要做的事情和普通进程也有

所差别。

5. Home界面启动

二、android启动过程可优化部分

1 定制本地服务

2 定制Android系统服务

3 优化ZygoteInit的类预加载preloadClasses和资源预加载preloadResources机制

4 PackageManagerService扫描、检查APK安装包信息

三、启动优化的实现

1 定制本地服务

本地服务都是由C或C++编写,它们都执行在Linux空间,在init进程的启动过程中

启动了很多本地服务,如果我们的设备中没有电话模块、蓝牙模块,我们可以将这些没用的

本地服务在里注释掉。

重新编译然后启动模拟器即可。

去掉上述几个本地服务与没有去掉本地服务,二者在开机时间上几乎没有减少多少,开

机时间只是稍微减少了一点。

如果去掉开机动画服务可以大大的提高系统的启动速度。

2 定制Android系统服务

2.1 Android底层服务裁剪优化方案及实现

首先要分析哪些部分是必不可少的服务:


本文标签: 启动 服务 进程 过程 优化