《Android框架揭秘》——1.2節(jié)通過啟動過程分析Android Framework

本節(jié)書摘來自異步社區(qū)《Android框架揭秘》一書中的第1章综苔,第1.2節(jié)通過啟動過程分析Android Framework运悲,作者 金泰延 , 宋亨周 , 樸知勛 , 李白 , 林起永桐智,更多章節(jié)內(nèi)容可以訪問云棲社區(qū)“異步社區(qū)”公眾號查看

1.2 通過啟動過程分析Android Framework
Android框架揭秘
Android源碼數(shù)量極其龐大,以Android 2.2為例,除去Linux代碼笔横,代碼數(shù)量大于4GB痴柔。若想理解和掌握這么龐大的Android系統(tǒng)沦偎,需要耗費(fèi)大量的時間,付出極大的努力咳蔚。并且豪嚎,到現(xiàn)在為止,也沒有相關(guān)資料對Android Frame作系統(tǒng)完整的講解說明谈火。

那么侈询,分析Android Framework用什么方法好呢?回答這一問題之前糯耍,先回想一下我們是如何分析他人編寫的程序代碼的扔字。在分析程序代碼時,我們通常從程序的入口main()函數(shù)開始温技,一點(diǎn)點(diǎn)地理清程序流革为,把握程序的運(yùn)行過程。同樣舵鳞,在分析結(jié)構(gòu)龐大的Android Framework時震檩,也要從Android平臺啟動過程著手。Android啟動過程包含從Linux內(nèi)核加載到Home應(yīng)用程序啟動的整個過程系任,依次分析這一過程恳蹲,有利于我們系統(tǒng)地理解Android Framework運(yùn)行的原理虐块。

如圖1-3所示,簡單地描述了Android啟動過程嘉蕾,本書在后續(xù)章節(jié)中講解Android Framework初始化過程贺奠、各模塊間如何相互作用等內(nèi)容時,均以此圖所描述的啟動過程為基礎(chǔ)错忱。

對照圖1-3 Android啟動過程圖儡率,簡單地講解一下。

1.Linux內(nèi)核

Android是基于Linux內(nèi)核的系統(tǒng)平臺以清。啟動時儿普,首先通過bootloader(系統(tǒng)加載器),加載Linux內(nèi)核掷倔。在Linux加載啟動時眉孩,與普通的Linux啟動過程相同,先初始化內(nèi)核勒葱,然后調(diào)用init進(jìn)程浪汪。

2.init

Android init進(jìn)程對各種設(shè)備進(jìn)行初始化,運(yùn)行Android Framework所需用的各種Daemon凛虽、Context Manager死遭、Media Server、Zygote等凯旋。

以下是init進(jìn)程執(zhí)行的Daemon進(jìn)程呀潭。

USB Daemon (usbd):管理USB連接。
Android Debug Bridge Daemon (adbd):Android Debug Bridge連接管理至非。
Debugger Daemon (debuggerd):啟動Debugger系統(tǒng)钠署。
Radio Interface Layer Daemon (rild):管理無線通信連接。
3.Context Manager

Context Manager是一個管理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ù)時信卡,需要先向服務(wù)管理器申請隔缀,而后通過Binder IPC(Interprocess communication)調(diào)用系統(tǒng)服務(wù)。

在系統(tǒng)啟動時傍菇,Android所有系統(tǒng)服務(wù)都要把各自的handle信息注冊到Context Manager猾瘸,此時,Binder IPC用來進(jìn)行進(jìn)程間的通信。

4.Media Server

Media Server用于運(yùn)行基于C/C++ 的本地系統(tǒng)服務(wù)牵触,如Audio Flinger(負(fù)責(zé)音頻輸出)淮悼、Camera等。

5.Zygote

Zygote進(jìn)程用于縮短Android應(yīng)用程序加載的時間揽思,每當(dāng)執(zhí)行Java應(yīng)用程序時袜腥,Zygote就會派生出一個子進(jìn)程來執(zhí)行應(yīng)用程序,該子進(jìn)程就是用來執(zhí)行Java應(yīng)用程序的虛擬機(jī)钉汗。

6.System Server

System Server是Android系統(tǒng)的一個核心進(jìn)程羹令,它是由Zygote進(jìn)程創(chuàng)建的,在Android啟動過程中位于Zygote之后损痰。在System Server中可以看到它建立的Android中的大部分服務(wù)福侈,如Activity Manager Service(管理應(yīng)用程序的生命周期)、Location Manager Service(提供終端的地理位置信息)等卢未。

為了將運(yùn)行在System Server中的Java系統(tǒng)服務(wù)提供給Android應(yīng)用程序或Framework內(nèi)部模塊調(diào)用肪凛,需要先將它們注冊到Context Manager中。

在通過Binder IPC將Java系統(tǒng)服務(wù)注冊到基于C語言的服務(wù)管理器時辽社,需要使用JNI(Java Native Interface)本地編程接口显拜。JNI允許Java代碼與其他編程語言(如C、C++爹袁、匯編語言)編寫的應(yīng)用程序和庫進(jìn)行交互操作。

以上就是對Android啟動過程以及Framework初始化的簡單介紹矮固。當(dāng)然這僅僅是Android啟動過程的一部分失息,如圖1-3所示,當(dāng)所有Java系統(tǒng)服務(wù)加載完畢后档址,Activity Manager Service會運(yùn)行HOME應(yīng)用盹兢,啟動過程繼續(xù)進(jìn)行。這部分已超出本書所要討論的范圍守伸,如果讀者感興趣绎秒,請參照Android源碼進(jìn)行分析。

出于篇幅的考量尼摹,本書不可能對Android Framework所有模塊的所有動作作出說明见芹。即便如此,沿著本書提供的思路蠢涝,參考相關(guān)章節(jié)內(nèi)容玄呛,分析相關(guān)源碼,你會很快和二、很容易地掌握Android Framework徘铝。


Framework學(xué)習(xí)手冊

文檔領(lǐng)取方式:點(diǎn)贊+關(guān)注,然后私信關(guān)鍵詞 【1】即可獲得免費(fèi)領(lǐng)取方式!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惕它,一起剝皮案震驚了整個濱河市怕午,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌淹魄,老刑警劉巖郁惜,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異揭北,居然都是意外死亡扳炬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門搔体,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恨樟,“玉大人,你說我怎么就攤上這事疚俱∪笆酰” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵呆奕,是天一觀的道長养晋。 經(jīng)常有香客問我,道長梁钾,這世上最難降的妖魔是什么绳泉? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮姆泻,結(jié)果婚禮上零酪,老公的妹妹穿的比我還像新娘。我一直安慰自己拇勃,他們只是感情好四苇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著方咆,像睡著了一般月腋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瓣赂,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天榆骚,我揣著相機(jī)與錄音,去河邊找鬼煌集。 笑死寨躁,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的牙勘。 我是一名探鬼主播职恳,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼所禀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了放钦?” 一聲冷哼從身側(cè)響起色徘,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎操禀,沒想到半個月后褂策,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡颓屑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年斤寂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揪惦。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡遍搞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出器腋,到底是詐尸還是另有隱情溪猿,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布纫塌,位于F島的核電站诊县,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏措左。R本人自食惡果不足惜依痊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望怎披。 院中可真熱鬧胸嘁,春花似錦、人聲如沸钳枕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鱼炒。三九已至,卻和暖如春蝌借,著一層夾襖步出監(jiān)牢的瞬間昔瞧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工菩佑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留自晰,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓稍坯,卻偏偏與公主長得像酬荞,于是被迫代替她去往敵國和親搓劫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容