安卓底層開發(fā)經(jīng)驗(yàn)

我干了3年Android sdk開發(fā),覺得到了瓶勁沒法更進(jìn)一步,于是花了一年多點(diǎn)時(shí)間,大概摸到點(diǎn)門徑。根據(jù)前輩的經(jīng)驗(yàn),Android底層完全入門需要兩年。

先說下我的入門過程:

第零步,下載源碼,我下的4.2的,框架層源碼10G,內(nèi)核2G多,ctags給框架層建的標(biāo)簽文件都有600M,當(dāng)時(shí)讓我有點(diǎn)震撼,用的vim+ctags+cscope來閱讀,還算不錯(cuò),架構(gòu)挺清晰的。

第一步,我找到了一本好書《Android的設(shè)計(jì)與實(shí)現(xiàn) 第一卷》它講了Android框架層的啟動(dòng),初始化,服務(wù)框架初始化,Binder,消息循環(huán),PackageManagerService,ActivityManagerService。據(jù)作者說后面會(huì)出講UI子系統(tǒng)的第二卷,拭目以待。其實(shí)這本書看了幾十頁我就發(fā)現(xiàn)需要第二步的知識(shí),否則看不下去,于是跳去第二步。

第二步,學(xué)習(xí)Linux系統(tǒng)編程,在看《Android的設(shè)計(jì)與實(shí)現(xiàn)》的時(shí)候我發(fā)現(xiàn),框架層的Native部分,全是Linux編程。為了掌握這部分知識(shí),我花了4個(gè)月學(xué)習(xí)了《Linux系統(tǒng)編程手冊(cè)》(TLPI)這本1000多頁的書,我以前是搞WIndows文件系統(tǒng)這塊的,所以C語言還比較熟,TLPI的習(xí)題很有意思,量也比較大,堅(jiān)持下來還是收獲很多。

第三步,花了4個(gè)月學(xué)習(xí)了一些Linux內(nèi)核的知識(shí),看了LKD,PLKA看了一半多。越學(xué)越?jīng)]底,覺得不懂得越來越多,不過這個(gè)也正常,只有靠慢慢磨,估計(jì)以后要不斷的磨這塊。

第四步,回頭看Android源碼,這次一口氣看完了《Android的設(shè)計(jì)與實(shí)現(xiàn) 第一卷》,終于對(duì)框架層有了譜。同時(shí)真的數(shù)次把我看暈,前面看Linux內(nèi)核源碼都沒這么暈,不斷在Java層和Native層之間跳有點(diǎn)磨腦漿。其中我又覺得Java的基礎(chǔ)沒有打太牢,回去補(bǔ)了一個(gè)月的《Core Java》第八版。但是這書沒有涉及UI子系統(tǒng),于是又看了《Android內(nèi)核剖析》

第五步,《Android內(nèi)核剖析》(這本書實(shí)際上是講框架層的,作者也是個(gè)搞嵌入式的,所以他在寫框架層的時(shí)候文筆不太好,很羅嗦,不過還是有很多看點(diǎn),到他后來寫做ROM,玩開發(fā)板時(shí)估計(jì)是說到了他的本行,一下子遛起來了看得出還是挺有水平的,這本書知識(shí)有點(diǎn)舊畢竟講的是2.3很多代碼已經(jīng)過時(shí),但是作者很多點(diǎn)子很有參考價(jià)值)這本書講UI子系統(tǒng)和按鍵/觸摸消息處理系統(tǒng)還是很有分量的,尤其13章View繪制那里,結(jié)合源碼研究很有收獲。而后面他講編譯框架和ROM相關(guān)的東西都是挺寶貴的資料。

第六步,為了再補(bǔ)一下其他諸如電源管理模塊等子系統(tǒng)的知識(shí)看了,《深入理解android》系列,個(gè)人認(rèn)為這個(gè)系列看起來有點(diǎn)不太舒服,不過作為補(bǔ)充印證還是比較有價(jià)值。

第七步,《Android系統(tǒng)源代碼情景分析》,羅升陽的源碼分析大作,比《Android的設(shè)計(jì)與實(shí)現(xiàn)》分析得更細(xì)致,但缺點(diǎn)是涉及到模塊比較少,選用的源碼也比《Android的設(shè)計(jì)與實(shí)現(xiàn)》更舊一點(diǎn)。看完書后需要去研究作者的博客,東西挺多的,一定讓你滿意。

第八步,買塊開發(fā)板自己玩。這步我還沒走到,原因是我覺得我還差點(diǎn)準(zhǔn)備知識(shí)??赡芤賻讉€(gè)月,到時(shí)準(zhǔn)備入塊6410或者樹莓派。最后,由于我11年以前都是搞Windows這塊的,所以對(duì)Linux知識(shí)不是很了解,不得已看了這么些書,如果是一直做Linux的人,很多步驟估計(jì)可以省掉了。直接上源碼才是正道。我本身做著移動(dòng)GIS開發(fā)的工作,學(xué)框架層全是因?yàn)榕d趣,但招聘平臺(tái)Android框架層開發(fā)人員還是蠻有競(jìng)爭力的有不少定制ROM,智能電視的工作都處于人才難求狀態(tài),畢竟有一定的門檻,現(xiàn)在各種ios培訓(xùn),讓奔著錢干開發(fā)的人紛紛涌入,而ios只能干sdk開發(fā)的缺點(diǎn)就暴露出來了,一堆新手老手,菜鳥大牛全擠在SDK開發(fā)這塊,我覺得不太妙。 反觀Android這邊,雖然入門菜鳥沒有搞ios來錢,但是可持續(xù)性很好,從sdk-》框架》驅(qū)動(dòng)》內(nèi)核這樣干下去。干著干著發(fā)現(xiàn)自己漸漸變成了Linux開發(fā)者/嵌入式開發(fā)者的人也不少,新人,老手,菜鳥大牛各居其位,層次性很好。

https://zhidao.baidu.com/question/135862502594238245.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容