我的成長之路

不想看我的廢話堂污,直接點擊[導(dǎo)航]王小二的技術(shù)棧站目錄

前言

我是一個從2014年畢業(yè)到目前為止一直在Android領(lǐng)域工作的工程師家肯,我想分享一下個人的成長之路,幫助大家可以少走一些彎路盟猖,或者有一些新的啟發(fā)讨衣。

2014年2月-2015年1月:

當(dāng)時我是大四下半學(xué)期换棚,公司希望我去實習(xí),因為我之前是做javaweb方向的反镇,所以我在寒假里差不多7天時間固蚤,學(xué)完了《瘋狂android講義》,剛開始實習(xí)歹茶,主要是解決bug夕玩,這時候改一個UI的字符串的異常,就已經(jīng)很開心了惊豺,正好有同事要離職燎孟,他把一個已經(jīng)開發(fā)差不多的APP交給我開發(fā),這個時候我漸漸掌握了自定義控件尸昧,動畫揩页,Handler,四大組件的基礎(chǔ)用法烹俗。由于是在手機廠商工作爆侣,所以也有了APK編譯流程的概念,了解源碼下編譯APK和Eclipse編譯的相似之處幢妄。

2015年2月-2015年5月:

去印度出差累提,增長了很多見識,也是第一次知道什么叫native crash磁浇,發(fā)現(xiàn)高通工程師分析log的能力非常強,這個時候我對整個android系統(tǒng)有了一丟丟的概念朽褪。最關(guān)鍵是了解到高通在手機廠商中角色置吓。

2015年5月-2017年5月:

從印度回來之后,我被分配到了FWK組缔赠,主要是負責(zé)手機的穩(wěn)定性衍锚,這個時候就會有大量的crash,手機重啟等問題嗤堰,漸漸的對system_server進程戴质,開機流程,開機動畫踢匣,zygote進程告匠,Input子系統(tǒng)有了一些概念,幸運的是我參加了一個有關(guān)于VR的項目离唬,讓我對SurfaceFlinger有了一定的概念后专,但是這個時候說實話,我對native開發(fā)能力输莺,也就能看看代碼戚哎,有時候還看不明白裸诽,而且找了好多資料,都無法掌握native的開發(fā)能力型凳,而且我持續(xù)不斷的在學(xué)Binder機制丈冬,但是總是感覺沒有學(xué)明白,老羅的《Android系統(tǒng)源代碼》無數(shù)次的打開甘畅,又失望的合上埂蕊。

2017年6月-2018年6月:

我認真的研究JNI,等研究完JNI之后橄浓,我發(fā)現(xiàn)不管是Binder機制粒梦,還是原來一些看不大懂的FWK的native代碼,也能看懂了荸实,還有Looper源碼也更加理解了匀们,但是說讓我去開發(fā)一個native的程序,還是有一點虛的

2018年6月-2019年6月

我開始慢慢接觸Linux kernel准给,復(fù)習(xí)C語言泄朴,慢慢的了解了Linux的一些IO復(fù)用機制例如Epoll機制,跨進程通信例如socket通信露氮,pipe祖灰,匿名共享內(nèi)存,對Binder驅(qū)動也差不多理解了百分之70畔规,一下子把我前幾年所學(xué)的知識串聯(lián)起來了局扶。
Looper:Epoll + eventfd
Input子系統(tǒng):Socket + Epoll + Binder機制
Surface GUI:Binder + 匿名共享內(nèi)存
虛擬機的fork:Socket

2019年6月-至今

我開始正式學(xué)習(xí)Linux kernel,主要方法是IO方向叁扫,正好學(xué)習(xí)了VFS三妈,也看了Linux驅(qū)動開發(fā)的書籍,一下子發(fā)現(xiàn)了差不多完全理解Binde機制莫绣,而且通過Binder機制反過來了解Linux的進程管理畴蒲,內(nèi)存管理,同步鎖等对室,我又看了《程序員的自我修養(yǎng)》這本書模燥,對一個C語言程序在Linux系統(tǒng)上運行的狀態(tài),有了一個充分的了解掩宜,一下子我發(fā)現(xiàn)自己把整個Kernel+Fwk+App都打通了蔫骂。腦海中可以浮現(xiàn)出整個手機運行狀態(tài)的每個進程,每一個線程在干嘛锭亏。

借用gityuan的一段話描述我目前的一個狀態(tài):

Android系統(tǒng)之博大精深纠吴,包括Linux內(nèi)核、Native慧瘤、虛擬機戴已、Framework固该,通過系統(tǒng)調(diào)用連通內(nèi)核與用戶空間,通過JNI打通用戶空間的Java層和Native層糖儡,通過Binder伐坏、Socket、Handler等打通跨進程握联、跨線程的信息交換桦沉。只有真正閱讀并理解系統(tǒng)核心架構(gòu)的設(shè)計,解決問題和設(shè)計方案才能做到心中無劍勝有劍金闽,才能做到知其然知其所以然纯露。當(dāng)修煉到此,恭喜你對系統(tǒng)有了更高一個層次的理解代芜,正如太極劍法埠褪,忘記了所有招式,也就練成了太極劍法挤庇。

再回過頭去看看那些API钞速,看到的將不再是一行行代碼、一個個接口的調(diào)用嫡秕,而是各種信息的傳遞與交互工作渴语,而是背后成千上萬個小蝌蚪的動態(tài)執(zhí)行流。記得《俠客行》里面的龍木二島主終其一生也無法參透太玄經(jīng)昆咽,石破天卻短短數(shù)日練成絕世神功菩佑,究其根源是龍木二島主以靜態(tài)視角去解讀太玄經(jīng)买雾,而石破天把墻壁的圖案想象成無數(shù)游動的蝌蚪竞帽,最終成就絕世神功罪既。一言以蔽之,程序代碼是死的汇在,系統(tǒng)運轉(zhuǎn)是活的,要以動態(tài)視角去理解系統(tǒng)架構(gòu)脏答。

未來

目前我的主要工作是負責(zé)android手機的性能優(yōu)化糕殉,kernel的IO優(yōu)化,我發(fā)現(xiàn)工作那么多年殖告,只能說目前的自己真正有能力去研究一些東西了阿蝶,自己的知識體系已經(jīng)建立起來了,可以添磚加瓦了黄绩。

這些年我看過的書

IMG_9253.JPG

但是我還是推薦這五本書


IMG_9202.JPG

目前在看的書
圖片發(fā)自簡書App

總結(jié)

1.從APP層-FWK層-Kernel層打通的難度和周期遠遠大于Kernel層-FWK層-APP層羡洁,我就是屬于前者,走了太多的彎路爽丹,后者的發(fā)展之路筑煮,我相信會比我快很多辛蚊,gityuan就是屬于后者。

2.Binder機制一定能要研究真仲,否則你基本不可能可以打通整個android系統(tǒng)袋马。跨進程通信秸应,跨線程通信都是我們需要去仔細研究的虑凛。

3.你可以不精通C++,但是一定要達到Linux C語言的開發(fā)能力软啼,其實我們?nèi)钡牟皇茿ndroid NDK的能力桑谍,而是缺的是Linux C的開發(fā)能力。

4.多看看書祸挪,我文章中用了好多次的一下子锣披,整個一下子真的是一下子頓悟了,因為我之前已經(jīng)有大量知識的積累了匕积,所以捅破窗戶紙盈罐,就可以豁然開讓,當(dāng)然我的同事也很牛逼闪唆,也幫我捅破的很多窗戶紙盅粪。

5.多去回答同事和網(wǎng)友的問題,在一次次回答問題悄蕾,被反問中票顾,你自己對知識的理解會不斷的加深。

6.當(dāng)你發(fā)現(xiàn)自己不懂的知識越來越多的時候帆调,證明你懂的知識越來越多奠骄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市番刊,隨后出現(xiàn)的幾起案子含鳞,更是在濱河造成了極大的恐慌,老刑警劉巖芹务,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝉绷,死亡現(xiàn)場離奇詭異,居然都是意外死亡枣抱,警方通過查閱死者的電腦和手機熔吗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來佳晶,“玉大人桅狠,你說我怎么就攤上這事。” “怎么了中跌?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵咨堤,是天一觀的道長。 經(jīng)常有香客問我晒他,道長吱型,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任陨仅,我火速辦了婚禮津滞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘灼伤。我一直安慰自己触徐,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布狐赡。 她就那樣靜靜地躺著撞鹉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颖侄。 梳的紋絲不亂的頭發(fā)上鸟雏,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音览祖,去河邊找鬼孝鹊。 笑死,一個胖子當(dāng)著我的面吹牛展蒂,可吹牛的內(nèi)容都是我干的又活。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼锰悼,長吁一口氣:“原來是場噩夢啊……” “哼柳骄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起箕般,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤耐薯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后丝里,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體可柿,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年丙者,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片营密。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡械媒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纷捞,我是刑警寧澤痢虹,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站主儡,受9級特大地震影響奖唯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜糜值,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一丰捷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧寂汇,春花似錦病往、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至榕栏,卻和暖如春畔勤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背扒磁。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工庆揪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人渗磅。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓嚷硫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親始鱼。 傳聞我的和親對象是個殘疾皇子仔掸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345