我干了3年Android sdk開發(fā)勃痴,覺得到了瓶勁沒法更進一步盔憨,于是花了一年多點時間馒胆,大概摸到點門徑缨称。根據(jù)前輩的經(jīng)驗,Android底層完全入門需要兩年祝迂。
先說下我的入門過程:
第零步睦尽,下載源碼,我下的4.2的型雳,框架層源碼10G当凡,內(nèi)核2G多,ctags給框架層建的標簽文件都有600M纠俭,當時讓我有點震撼沿量,用的vim+ctags+cscope來閱讀,還算不錯冤荆,架構(gòu)挺清晰的朴则。
第一步,我找到了一本好書《Android的設(shè)計與實現(xiàn) 第一卷》它講了Android框架層的啟動钓简,初始化乌妒,服務(wù)框架初始化,Binder外邓,消息循環(huán)撤蚊,PackageManagerService,ActivityManagerService坐榆。據(jù)作者說后面會出講UI子系統(tǒng)的第二卷拴魄,拭目以待。其實這本書看了幾十頁我就發(fā)現(xiàn)需要第二步的知識席镀,否則看不下去匹中,于是跳去第二步。
第二步豪诲,學(xué)習(xí)Linux系統(tǒng)編程顶捷,在看《Android的設(shè)計與實現(xiàn)》的時候我發(fā)現(xiàn),框架層的Native部分屎篱,全是Linux編程服赎。為了掌握這部分知識葵蒂,我花了4個月學(xué)習(xí)了《Linux系統(tǒng)編程手冊》(TLPI)這本1000多頁的書,我以前是搞WIndows文件系統(tǒng)這塊的重虑,所以C語言還比較熟践付,TLPI的習(xí)題很有意思,量也比較大缺厉,堅持下來還是收獲很多永高。
第三步,花了4個月學(xué)習(xí)了一些Linux內(nèi)核的知識提针,看了LKD命爬,PLKA看了一半多。越學(xué)越?jīng)]底辐脖,覺得不懂得越來越多饲宛,不過這個也正常,只有靠慢慢磨嗜价,估計以后要不斷的磨這塊艇抠。
第四步,回頭看Android源碼久锥,這次一口氣看完了《Android的設(shè)計與實現(xiàn) 第一卷》练链,終于對框架層有了譜。同時真的數(shù)次把我看暈奴拦,前面看Linux內(nèi)核源碼都沒這么暈,不斷在Java層和Native層之間跳有點磨腦漿届吁。其中我又覺得Java的基礎(chǔ)沒有打太牢错妖,回去補了一個月的《Core Java》第八版。但是這書沒有涉及UI子系統(tǒng)疚沐,于是又看了《Android內(nèi)核剖析》
第五步暂氯,《Android內(nèi)核剖析》(這本書實際上是講框架層的,作者也是個搞嵌入式的亮蛔,所以他在寫框架層的時候文筆不太好痴施,很羅嗦,不過還是有很多看點究流,到他后來寫做ROM辣吃,玩開發(fā)板時估計是說到了他的本行,一下子遛起來了看得出還是挺有水平的芬探,這本書知識有點舊畢竟講的是2.3很多代碼已經(jīng)過時神得,但是作者很多點子很有參考價值)這本書講UI子系統(tǒng)和按鍵/觸摸消息處理系統(tǒng)還是很有分量的,尤其13章View繪制那里偷仿,結(jié)合源碼研究很有收獲哩簿。而后面他講編譯框架和ROM相關(guān)的東西都是挺寶貴的資料宵蕉。
第六步,為了再補一下其他諸如電源管理模塊等子系統(tǒng)的知識看了节榜,《深入理解android》系列羡玛,個人認為這個系列看起來有點不太舒服,不過作為補充印證還是比較有價值宗苍。
第七步稼稿,《Android系統(tǒng)源代碼情景分析》,羅升陽的源碼分析大作浓若,比《Android的設(shè)計與實現(xiàn)》分析得更細致渺杉,但缺點是涉及到模塊比較少,選用的源碼也比《Android的設(shè)計與實現(xiàn)》更舊一點挪钓∈窃剑看完書后需要去研究作者的博客,東西挺多的碌上,一定讓你滿意倚评。
第八步,買塊開發(fā)板自己玩。這步我還沒走到扎唾,原因是我覺得我還差點準備知識劫灶。可能要再幾個月呢岗,到時準備入塊6410或者樹莓派。最后蛹尝,由于我11年以前都是搞Windows這塊的后豫,所以對Linux知識不是很了解,不得已看了這么些書突那,如果是一直做Linux的人挫酿,很多步驟估計可以省掉了。直接上源碼才是正道愕难。我本身做著移動GIS開發(fā)的工作早龟,學(xué)框架層全是因為興趣,但招聘平臺Android框架層開發(fā)人員還是蠻有競爭力的有不少定制ROM猫缭,智能電視的工作都處于人才難求狀態(tài)葱弟,畢竟有一定的門檻,現(xiàn)在各種ios培訓(xùn)猜丹,讓奔著錢干開發(fā)的人紛紛涌入翘悉,而ios只能干sdk開發(fā)的缺點就暴露出來了,一堆新手老手居触,菜鳥大牛全擠在SDK開發(fā)這塊妖混,我覺得不太妙老赤。 反觀Android這邊,雖然入門菜鳥沒有搞ios來錢制市,但是可持續(xù)性很好抬旺,從sdk-》框架》驅(qū)動》內(nèi)核這樣干下去。干著干著發(fā)現(xiàn)自己漸漸變成了Linux開發(fā)者/嵌入式開發(fā)者的人也不少祥楣,新人开财,老手,菜鳥大牛各居其位误褪,層次性很好责鳍。