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

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++、彙編語言)編寫的應用程序和庫進行交互操做。編程

相關文章
相關標籤/搜索