2015-12-23 17:13:58 1607瀏覽
Android源碼數(shù)量極其龐大,以Android 2.2為例,除去Linux代碼,代碼數(shù)量大于4GB。若想理解和掌握這么龐大的Android系統(tǒng),需要耗費(fèi)大量的時(shí)間,付出極大的努力。并且,到現(xiàn)在為止,也沒(méi)有相關(guān)資料對(duì)Android Frame作系統(tǒng)完整的講解說(shuō)明。
那么,分析Android Framework用什么方法好呢?回答這一問(wèn)題之前,先回想一下我們是如何分析他人編寫的程序代碼的。在分析程序代碼時(shí),我們通常從程序的入口main()函數(shù)開始,一點(diǎn)點(diǎn)地理清程序流,把握程序的運(yùn)行過(guò)程。同樣,在Android開發(fā)者分析結(jié)構(gòu)龐大的Android Framework時(shí),也要從Android平臺(tái)啟動(dòng)過(guò)程著手。Android啟動(dòng)過(guò)程包含從Linux內(nèi)核加載到Home應(yīng)用程序啟動(dòng)的整個(gè)過(guò)程,依次分析這一過(guò)程,有利于我們系統(tǒng)地理解Android Framework運(yùn)行的原理。
從零開始學(xué)Android之通過(guò)啟動(dòng)過(guò)程分析Android Framework:
一、Linux內(nèi)核
Android是基于Linux內(nèi)核的系統(tǒng)平臺(tái)。啟動(dòng)時(shí),首先通過(guò)bootloader(系統(tǒng)加載器),加載Linux內(nèi)核。在Linux加載啟動(dòng)時(shí),與普通的Linux啟動(dòng)過(guò)程相同,先初始化內(nèi)核,然后調(diào)用init進(jìn)程。
二、mlt
Android init進(jìn)程對(duì)各種設(shè)備進(jìn)行初始化,運(yùn)行Android Framework所需用的各種Daemon、Context Manager、Media Server、Zygote等。以下是init進(jìn)程執(zhí)行的Daemon進(jìn)程。
1、USB Daemon(usbd):管理USB連接。
2、Android Debug Bridge Daemon(adbd):Android Debug Bridge連接管理。
3、Debugger Daemon(debuggerd):?jiǎn)?dòng)Debugger系統(tǒng)。
4、Radio Interface Layer Daemon(rild):管理無(wú)線通信連接。
三、Context Manager
Context Manager是一個(gè)管理Android系統(tǒng)服務(wù)的重要進(jìn)程。系統(tǒng)服務(wù)是組成Android Framework的重要組件,提供從相機(jī)、音頻、視頻處理到各種應(yīng)用程序制作所需要的重要的API。Context Manager提供運(yùn)行于Android內(nèi)的各種系統(tǒng)服務(wù)信息。應(yīng)用程序或Framework內(nèi)部模塊在調(diào)用系統(tǒng)服務(wù)時(shí),需要先向服務(wù)管理器申請(qǐng),而后通過(guò)Binder IPC(Interprocesscommunication)調(diào)用系統(tǒng)服務(wù)。在系統(tǒng)啟動(dòng)時(shí),Android所有系統(tǒng)服務(wù)都要把各自的handle信息注冊(cè)到Context Manager,此時(shí),Binder IPC用來(lái)進(jìn)行進(jìn)程問(wèn)的通信。
四、Media Server
Media Server用于運(yùn)行基于C/C++的本地系統(tǒng)服務(wù),如Audio Flinger(負(fù)責(zé)音頻輸出)、Camera等。
五、Zygote
Zygote進(jìn)程用于縮短Android應(yīng)用栩芋加載的時(shí)間,每當(dāng)執(zhí)行Java應(yīng)用程序時(shí),Zygote就會(huì)派生出‘個(gè)子進(jìn)程來(lái)執(zhí)行應(yīng)用程序,該子進(jìn)程就是用來(lái)執(zhí)行Java應(yīng)用程序的虛擬機(jī)。
六、System Server
System Server是Android系統(tǒng)的‘個(gè)核心進(jìn)程,它是由Zygote進(jìn)程創(chuàng)建的,在Android啟動(dòng)過(guò)程中位于Zygote之后。在System Server中可以看到它建立的Android中的大部分服務(wù),如Activity Manager Service(管理應(yīng)用程序的生命周期)、Location Manager Service(提供終端的地理位置信息)等。
以上就是對(duì)Android啟動(dòng)過(guò)程以及Framework初始化的簡(jiǎn)單介紹。當(dāng)然這僅僅是Android啟動(dòng)過(guò)程的一部分,當(dāng)所有Java系統(tǒng)服務(wù)加載完畢后,Activity Manager Service會(huì)運(yùn)行HOME應(yīng)用,啟動(dòng)過(guò)程繼續(xù)進(jìn)行。如果讀者感興趣,請(qǐng)參照扣丁學(xué)堂Android在線課程講述的源碼進(jìn)行分析。
查看更多關(guān)于“Android資訊”的相關(guān)文章>>