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底层服务裁剪优化方案及实现
首先要分析哪些部分是必不可少的服务:
版权声明:本文标题:android启动优化 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1713599054a642671.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论