android框架学习一android启动过程

android主要源代码组成:
Kernel:android Linux内核2.6

bionic:android标准C运行支持库

bootloader:android内核加载器参考

build:android的Bulid系统

cts:android兼容性测试源

dalvik:Dalvik虚拟机

external:android使用的开源

frameworks:android框架

hardware:android HAL(Hardware Abstraction Layer,硬件抽象层)库源

packages:包含android基本应用,Content Provider等

system:android初始化进程,蓝牙工具集等
 

android启动过程:

1.Linux内核:
  android启动时,首先通过bootloader(系统加载器),加载Linux内核。

2.init
  android init进程对各种设备进行初始化,运行android framework所需用的各种Daemon、Context Manager、Media Server、Zygote等。
  
  Daemon进程:
   USB Daemon(usbd):管理USB连接

   android Debug Bridge Daemon(adbd):android Debug Bridge连接管理
  
   Debugger Daemon(debugger):启动Debugger系统

   Radio Interface Layer Daemon(rild):管理无限通信

3.Context Manager
   Context Manager是一个管理android系统服务的重要进程。系统服务是组成android Farmework 的重要组件,提供相机、音频、相机处理到各种应用程序制作所需要的重要API。Context Manager提供运行于android内的各种系统服务消息。应用程序或者Framework内部模块在调用系统服务时,需要先向服务管理申请,然后通过Binder IPC(Interprocess commuication)调用系统服务。在系统启动时,android所有系统服务都要各自的Handle信息注册到Context Manager,此时,Binder IPC用来进行进程间的通信。

4.Media Server
   Media Server用于运行基于C/C++的本地系统服务,如Audio Flinfer(负责音频输出)、Camera等。

5.Zyogte
   Zygote进程用于缩短android应用程序加载的时间,每当执行Java应用能程序时,Zygote就会派生一个子进程来执行应用程序,该子进程就是用来执行Java应用程序的虚拟机。

6.System Server
   System Server是android系统的一个核心进程,它是由Zygote进程创建的,在android启动过程中位于Zygote之后。在System Server中可以看到它建立的android中的大部分服务,如Activity Manager Service(管理应用程序的生命周期)、Location Manager Service(提供终端的地理位置信息)等。将运载在System Server中的Java系统服务提供给android应用程序或者Framework内部模块调用,需要先将它们注册到Context Manager中。在通过Binder IPC将Java系统服务注册到C语言的服务管理器时,需要使用JNI(Java Native Interface)本地编程接口。JNI允许Java代码与其他编程语言(如C、C++、汇编语言)编写的应用程序和库进行交互操作。

你可能感兴趣的:(android,框架)