android系统的整体架构和启动过程 (android开机自启动)

应用程序框架层,即Android Framework层,它主要是实现Android系统的核心服务和提供接口来开发应用程序,这些核心服务支撑着整个Android系统的上层,根据这些核心服务,这一层可以分为很多模块。

ActivityManagerService:管理Android四大组件和进程内存。

WindowManagerService:管理Android窗口。

PackageManagerService:包管理服务,主要是apk的安装和权限的分配。

PowerManagerService:电源管理服务。

MultMedia:多媒体模块。

NotificationManagerService:通知管理服务。

View系统:UI的绘制和UI事件的分发。

android开机详细过程,android应用启动过程5个阶段

应用程序层,即Android应用程序,它包括系统应用和第三方应用。系统应用主要包含“设置”、“主界面”、“相机”等。第三方应用比较多,如QQ、微信、淘宝等。Android开发者主要集中在这一层,因为大多数Android开发人员都是从事应用程序层开发。

由于Android系统包含这么多层,并且每层又都很复杂,因此只有每层紧密配合之后,整个Android系统才会更加流畅、更加稳定。作为一个Android工程师,不管你是负责框架开发还是负责应用程序开发,或者是负责kernel开发,你都有可能涉及不是自己的这一层,但是为了工作,为了开发更好的产品,一个Android工程师有必要理解Android的多层。因为只有理解了Android多层之后,你才会对Android系统有个整体的把握。

在Android纵向上主要是分析开机的启动流程,如图所示。这个过程从Init进程启动开始,到Launcher主界面显示结束。首先,Init进程会启动Zygote、SurfaceFlinger、Vold等Native进程。当SurfaceFlinger进程被Init进程启动之后,它会去启动开机动画程序bootanimation。Init进程在启动SurfaceFlinger进程的同时也会去启动Zygote进程,当Zygote进程启动好了之后,Zygote进程会去启动SystemServer进程,而SystemServer进程启动了Android框架层的核心服务AMS、WMS、PMS等,这些服务支撑整个上层应用程序。当SystemServer进程中的核心服务AMS启动好之后,AMS会启动Android应用程序Launcher,Launcher会加载所有的应用程序图标到界面上。当Launcher启动完成之后,AMS会去请求SurfaceFlinger退出开机动画,开机动画一退出,Launcher界面就显示出来了。因此,在Android纵向这条线上主要围绕Android的启动过程进行,以及跟启动有关的Android系统问题,比如系统重启、死机等问题。

android开机详细过程,android应用启动过程5个阶段

在Android横向上主要涉及Android框架层的具体模块,如图所示,包含ActivityManagerService、View系统、资源管理、Android系统控件等。ActivityManagerService主要是对四大组件和内存的管理,而View系统、资源管理框架和系统控件共同构成了ROMUI。

android开机详细过程,android应用启动过程5个阶段