天天看點

Framework啟動過程

了解android的都知道,android系統是建立在linux核心以上,添加了硬體抽象層(保護廠商的利益,保密各種硬體參數),然後搭建了android Framework,android應用就運作在最頂端。

在這裡,簡要記錄自己對Framework啟動過程的了解。 

首先系統在啟動linux核心後,開始啟動Framework層。Framework層,是從什麼開始啟動的呢?linux啟動結束的最後,讀取init.rc檔案,該檔案中定義了各種服務程式參數,其中包括Zygote的配置參數。 系統通過app_process啟動Zygote程序(該程序包含兩個主體,Socket服務端,用于接收啟動新的Dalvik程序指令;Framework共享類和共享資源,以至于其他Dalvik啟動時,不需要重複裝載資源)。當系統的第一個Dalvik程序(zygote)啟動後,Socket服務端就可以啟動新的Dalvik程序(應用等)。zygote最先啟動的程序是SystemServer,這個Dalvik程序啟動了Socket用戶端,并由Ams負責管理,實際上,Ams是通過Dalvik程序啟動的Socket用戶端,IPC調用,與zygote通信,通過zygote的Socket服務端,調用DalvikVM,啟動新的Dalvik程序。

綜上所述,當linux系統啟動結束時,讀取framework服務配置檔案,然後啟動第一個zygote DalvikVM程序,啟動Socket服務端,用于接收新的啟動Dalvik程序指令;準備共享的類和資源。zygote又啟動一個SystemServer Dalvic程序,SystemServer啟動了Socket用戶端,并且由Ams管理, 典型的Binder架構。這樣就可以通過Socket用戶端進行遠端調用了。

繼續閱讀