Android系统架构及启动流程初探

Android系统架构

  • Android 自上而下可以简单分为:Application应用层Android Framework应用框架层系统运行库层(包括Android运行时库)以及Linux内核层

    Android系统架构图
  • Application应用层:手机上所有的应用程序都属于这个层,我们平时Android应用开发也是在这个层,使用的开发语言是Java
  • Android Framework应用框架层:这一层主要提供了开发应用程序时需要用到的一系列API,我们开发App时就会用到这里提供的API,这一层的开发语言也是Java
  • 系统运行库层:这一层主要是一些C/C++库,为Android提供了主要的系统特性。Android运行时库主要包含一些核心库以及 Dalvik虚拟机。
  • Linux内核层: Android是基于Linux内核的,这一层为Android的硬件设备提供底层驱动,如音频、蓝牙、电源管理等。

Android系统的启动流程


这里写图片描述

首先是Linux内核的加载和启动
  • 设备上电(也就是打开手机电源)
  • 片上ROM的启动引导代码找到Bootloader代码开始执行
  • Bootloader负责硬件的初始化并加载Linux内核
  • Linux内核开始启动,初始化各种软硬件环境,加载驱动程序,挂载根文件系统
  • Linux内核执行init程序,开启Android的世界
  • 不同厂商品牌的手机启动都会有不同的图标和动画,主要就是通过修改Init程序实现。
Android的启动
  • Linux内核的init进程会执行app_process程序,创建Zygote进程,它是Android系统最重要的进程,所有后续的Android应用程序都是由它fork出来的。Zygote进程里创建了虚拟机实例,所以每一个应用程序进程里都有自己的虚拟机,也即每一个应用程序都运行在自己的虚拟机里。
  • Zygote进程启动起来以后就会启动System Server进程,System Server进程会启动一系列关键服务:包括ActivityManagerService、PackageManagerService、WindowManagerService等,也即应用框架层的服务


    应用框架层的组成

  • PackageManagerService启动过程中会解析Android系统的镜像文件,获取里面已经编译好的应用程序,如电话、短信等,也就是我们手机开机以后就看到的应用。每一个应用程序的入口Activity(即AndroidManifest.xml文件中设置“android.intent.category.LAUNCHER”的Activity)都被保存在本地。

  • ActivityManagerService负责启动应用程序。首先启动的应用就是系统的Home应用,也即Launcher程序。
  • Launcher程序启动Launcher组件,调用Launcher组件的onCreate方法(就类似于MainActivity的onCreate方法)。
  • 在Launcher组件的onCreate方法中PackageManagerService获取所有的应用信息,Launcherd的bindAllApplications()加载所有应用。
  • 每一个应用程序快捷图标的信息使用一个ApplicationInfo对象描述,被显示到屏幕,并且被注册了点击事件。
  • 点击应用图标,Launcher的startActivitySafely()方法启动指定的应用程序的根Activity组件。
  • 至此,Android系统就启动完成了。


欢迎关注我的公众号,和我一起每天进步一点点!
这里写图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值