00 | Android 高級(jí)進(jìn)階(源碼剖析篇)

Android 高級(jí)進(jìn)階(源碼剖析篇).jpg

Android 發(fā)展到現(xiàn)在,已經(jīng)接近 10 個(gè)年頭了,但在平時(shí)的招聘面試過(guò)程中,我發(fā)現(xiàn)很多開(kāi)發(fā)者其實(shí)對(duì)工程實(shí)踐中很多通用技能點(diǎn)要么沒(méi)聽(tīng)說(shuō),要么掌握的不全面。于是就有了《Android 高級(jí)進(jìn)階》一書(shū)。

在這本書(shū)的內(nèi)容簡(jiǎn)介中有說(shuō)到,本書(shū)是 Android 的進(jìn)階學(xué)習(xí)指南,主要是 Android 初中級(jí)開(kāi)發(fā)者進(jìn)階所需的知識(shí)點(diǎn),高級(jí)開(kāi)發(fā)者也可以從中發(fā)現(xiàn)很多共鳴點(diǎn)。本書(shū)的主要目的在于給讀者一個(gè)完整的 Android 中高級(jí)開(kāi)發(fā)者的知識(shí)圖譜,旨在為初中級(jí)開(kāi)發(fā)者在技術(shù)上更上一層樓提供必要的知識(shí)儲(chǔ)備,當(dāng)然,某些知識(shí)點(diǎn)如果要講完整,可以單獨(dú)成書(shū),限于篇幅,類(lèi)似這樣的少量幾個(gè)知識(shí)點(diǎn)只能點(diǎn)到為止,但相信讀完此書(shū)后,在 Android 研發(fā)這條道路上你的視野會(huì)更開(kāi)闊,在技術(shù)選型,方案討論中會(huì)具備更多的決策能力。

但是有些讀者讀完《Android高級(jí)進(jìn)階》一書(shū),總感覺(jué)意猶未盡。有的反饋如果部分知識(shí)點(diǎn)能夠深入講解就更好了,例如書(shū)中提到的開(kāi)源框架的實(shí)現(xiàn)原理。在這本書(shū)中我確實(shí)介紹了不少常用的開(kāi)源框架,特別是在系統(tǒng)架構(gòu)篇中的《基于開(kāi)源項(xiàng)目搭建屬于自己的技術(shù)堆?!芬还?jié),介紹了搭建一個(gè)應(yīng)用所需的通用基礎(chǔ)能力涉及到的開(kāi)源框架,當(dāng)時(shí)在這本書(shū)中想要講清楚這些框架的整體架構(gòu)和核心原理等不僅篇幅不允許,也不符合這本書(shū)的定位。

這本書(shū)開(kāi)始于 2015 年,出版于 2016 年,這兩年是國(guó)內(nèi)外 Android 領(lǐng)域蓬勃發(fā)展的時(shí)期,特別是 2016 年。到了今年,也就是 2017 年,可以說(shuō) Android 已經(jīng)處于一個(gè)成熟穩(wěn)定期,今年幾乎沒(méi)有什么新鮮的東西出現(xiàn),很多都是在炒冷飯了。一個(gè)技術(shù)領(lǐng)域發(fā)展到了這種時(shí)期,是時(shí)候讓我們沉下心來(lái)深入常用框架的內(nèi)部,了解其底層實(shí)現(xiàn),一方面進(jìn)一步加強(qiáng)自身的技術(shù)積累,另一方面也能夠讓自己在眾多的開(kāi)發(fā)者中脫穎而出。

當(dāng)然,源碼剖析是一個(gè)費(fèi)力不討好的工作,網(wǎng)上也有很多人嘗試做系列的剖析,但都沒(méi)能堅(jiān)持下來(lái),往往寫(xiě)了幾篇之后就因?yàn)楦鞣N原因擱置了;也有些人嘗試通過(guò)多人協(xié)作的模式,雖然量是出來(lái)了,質(zhì)卻良莠不齊,文章的風(fēng)格和架構(gòu)也不統(tǒng)一。還有些人對(duì)框架的解析重點(diǎn)放在架構(gòu)設(shè)計(jì)上,對(duì)代碼實(shí)現(xiàn)細(xì)節(jié)介紹很少。但往往細(xì)節(jié)才是魔鬼,架構(gòu)理解得再好,還是要通過(guò)代碼一行一行來(lái)實(shí)現(xiàn),對(duì)于大多數(shù)開(kāi)發(fā)者來(lái)說(shuō),對(duì)架構(gòu)得理解固然重要,但實(shí)際工作中更多的還是對(duì)細(xì)節(jié)的處理,PPT 工程師畢竟占少數(shù)。

以上是費(fèi)力,不討好指的是對(duì)大多數(shù)開(kāi)發(fā)者而言,他們其實(shí)并不想了解項(xiàng)目中所用框架的實(shí)現(xiàn)細(xì)節(jié),畢竟工作中只是實(shí)現(xiàn)業(yè)務(wù)代碼,寫(xiě)寫(xiě) if else,他覺(jué)得了解底層細(xì)節(jié)對(duì)他沒(méi)什么用??纯醇夹g(shù)圖書(shū)市場(chǎng),銷(xiāo)量最高的往往是那些入門(mén)類(lèi)圖書(shū),看看網(wǎng)上的技術(shù)文章,點(diǎn)贊數(shù)高的往往是一些 awesome 類(lèi)的文章。當(dāng)然這和技術(shù)人員的金字塔分布也有一定關(guān)系。初中級(jí)開(kāi)放人員總是占多數(shù)。但你有沒(méi)有想過(guò),那些高級(jí)工程師,資深工程師,架構(gòu)師是如何升上去的呢?想在技術(shù)線往上升,起碼在技術(shù)上你得有別于其他人的競(jìng)爭(zhēng)力。對(duì)框架的透徹理解就是提升競(jìng)爭(zhēng)力的方式之一。

為了更進(jìn)一步說(shuō)明閱讀源碼的重要性,在此,我引用下 2013 年寫(xiě)的一篇文章中的一段話:

Android 應(yīng)用開(kāi)發(fā)已經(jīng)進(jìn)入到相對(duì)成熟的階段,特別在國(guó)外,涌現(xiàn)出了各式各樣的成熟穩(wěn)定的開(kāi)源庫(kù),供普通開(kāi)發(fā)者使用。這種情況雖然極大加速了 app 開(kāi)發(fā)的進(jìn)程,但同時(shí)帶來(lái)的問(wèn)題是大多數(shù)普通開(kāi)發(fā)者在使用這些開(kāi)源庫(kù)的時(shí)候只是止步于知道怎么使用它,但對(duì)開(kāi)源庫(kù)的底層實(shí)現(xiàn)原理并不清楚,或者不怎么深究,導(dǎo)致的問(wèn)題很多:
1)當(dāng)開(kāi)源庫(kù)出現(xiàn) bug 時(shí),不能夠很好很快的定位出問(wèn)題;
2)自己日常的代碼編寫(xiě)只局限于實(shí)現(xiàn) app 的業(yè)務(wù)邏輯,太上層,對(duì)技術(shù)水平的提升沒(méi)有多大的好處;
3)對(duì)追求完美的人來(lái)說(shuō),只有對(duì)自己項(xiàng)目中所有代碼實(shí)現(xiàn)的原理都清楚的時(shí)候,才會(huì)安心,才會(huì)有成就感;
4)當(dāng)自己項(xiàng)目需要寫(xiě)基礎(chǔ)庫(kù)代碼時(shí),如果已經(jīng)熟知各種開(kāi)源庫(kù)的實(shí)現(xiàn),那么更能設(shè)計(jì)出好的架構(gòu),寫(xiě)出好的代碼。

以上是 《Android高級(jí)進(jìn)階(源碼剖析篇)》的緣起,以下是初版的目錄,我們剖析的基本上都是久經(jīng)考驗(yàn)的知名框架。當(dāng)然,想要完成目錄中這些框架的剖析,本身需要很大的工作量,但萬(wàn)事要有個(gè)宏大的目標(biāo),讓我們一步一步走下去。

最后編輯于
?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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