Android版本簡介
Android系統(tǒng)從2007年最早的Android 1.0發(fā)布到今年Android 8.0的發(fā)布军拟,雖然已經(jīng)發(fā)生了很大的變化硬霍,但是基本的框架并沒有太大的變化筷黔,我先后接觸過Android 2.2姐仅、Android4.4、Android6.0骄噪、Android7.0版本尚困,下圖分別是Android 2.2和Android8.0的軟件架構(gòu)圖,從這兩張圖中可以看到链蕊,即使是最新的Android版本事甜,其框架依然和Android 2.2版本保持基本一致,這得益于Android早期版本就已經(jīng)經(jīng)過良好的設(shè)計滔韵,使其具備了很好的擴展性逻谦。從這兩幅圖中可以看到的一個最大的變化就是Android虛擬機從dalvik換成了art,當(dāng)然每一層的具體實現(xiàn)陪蜻,有些確實也發(fā)生比較大的變化邦马。
那么Android有這么多版本,如果想對Android系統(tǒng)進行分析宴卖,選擇什么版本比較好呢滋将,其實這應(yīng)該是一個因人而異沒有絕對答案的問題,如果只是想搞清Android系統(tǒng)原理症昏,我建議選擇2.x版本就好了随闽,因為2.x版本在框架上基本定型,而代碼規(guī)模要小很多肝谭,能最快速的把握核心邏輯和原理掘宪,而且如果真的把2.x版本搞懂了,說明具備了分析Android系統(tǒng)所需要知識結(jié)構(gòu)分苇,也具備快速分析任一Android版本的能力添诉。這也是老羅和鄧凡平等前輩基于2.x版本的分析依舊對新手有參考意義的地方,有時候看到那些說分析過時的評論也是苦笑不得啊医寿。理解了2.x版本后栏赴,就可以根據(jù)自己工作的需要,再分析具體的版本了靖秩。
博客內(nèi)容說明
就我自己來說须眷,對一些實現(xiàn)機制上發(fā)生較大變化的又比較復(fù)雜的模塊,我會先對2.2版本進行分析沟突,然后再對6.0版本或其他有代表性的版本進行分析花颗,主要是想看一下技術(shù)演進的過程,而如果是一些實現(xiàn)機制上沒啥變化的或者簡單的模塊惠拭,我會直接對6.0版本進行分析扩劝,因為我覺得這兩個版本比較有代表性吧庸论,而且接觸的時間也多一點,但是最后寫成博客的話棒呛,為了節(jié)省時間聂示,基本都基于6.0版本來寫吧。
好了簇秒,扯了這么多廢話鱼喉,究竟應(yīng)該怎么分析Android這個博大精深的系統(tǒng)呢?我覺得不管采用什么方法趋观,對于想分析Android系統(tǒng)的童鞋來說扛禽,首先要達到的一個目標就是打通整個系統(tǒng),可以先分析一些通用的模塊皱坛,比如四大組件相關(guān)的编曼,然后再分析專業(yè)性比較強的模塊,比如多媒體子系統(tǒng)麸恍、網(wǎng)絡(luò)子系統(tǒng)等灵巧,可以采用情景分析法,比如某個組件抹沪、某個功能的原理和流程刻肄,系統(tǒng)啟動流程等,我準備大概按以下提綱來安排我的博客融欧,實際寫博客不會按順序來寫敏弃,寫完一些基礎(chǔ)的博客后,會先寫一些最近工作中相關(guān)度比較高的一些東西噪馏。
- Android基礎(chǔ)
- Android系統(tǒng)啟動流程
- Android app組件
- Android顯示子系統(tǒng)
- Android多媒體子系統(tǒng)
- Android網(wǎng)絡(luò)子系統(tǒng)
- Android虛擬機
- Android開發(fā)調(diào)試
- 等等等
分析Android系統(tǒng)是個任重而道遠的事情麦到,是個需要持續(xù)積累的過程,剛開始肯定會碰到一些門檻欠肾,不過跨過去之后基本就一馬平川了瓶颠,主要就是需要一個比較全面的知識結(jié)構(gòu),如果你軟件經(jīng)驗比較豐富基礎(chǔ)比較好的話刺桃,應(yīng)該會比較順利粹淋,不然的話肯定會比較吃力的,容易陷入細節(jié)瑟慈,抓不住重點桃移。如果對系統(tǒng)比較熟悉了,要寫成博客還需要投入很多的時間葛碧,不管怎樣借杰,路漫漫其修遠兮 ,吾將上下而求索进泼,一起努力吧蔗衡。