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
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++、汇编语言)编写的应用程序和库进行交互操做。编程