前言
移動(dòng)研發(fā)火熱不停乾忱,越來(lái)越多人開始學(xué)習(xí)android開發(fā)。但很多人感覺入門容易成長(zhǎng)很難历极,對(duì)未來(lái)比較迷茫窄瘟,不知道自己技能該怎么提升,到達(dá)下一階段需要補(bǔ)充哪些內(nèi)容趟卸。市面上也多是談?wù)撝R(shí)圖譜蹄葱,缺少體系和成長(zhǎng)節(jié)奏感,特此編寫一份android研發(fā)進(jìn)階之路锄列,希望能對(duì)大家有所幫助图云。
這篇文章里,我們只談技術(shù)邻邮,不談軟技能竣况。
在這里我把攻城獅分成初級(jí)、中級(jí)筒严、高級(jí)和資深四個(gè)階段丹泉,分別對(duì)研發(fā)設(shè)計(jì)能力、工具使用鸭蛙、系統(tǒng)原理和架構(gòu)等作出要求摹恨。
初級(jí)
我對(duì)初級(jí)研發(fā)攻城獅的定義是掌握基礎(chǔ)的android知識(shí),能夠獨(dú)立完成一個(gè)功能规惰。這個(gè)層級(jí)大部分人通過(guò)看一些資料書籍再經(jīng)過(guò)項(xiàng)目練習(xí)很快可以達(dá)到睬塌。
需要的技能有:
- 掌握android 四大組件知識(shí),深入了解相關(guān)生命周期歇万;對(duì)于Application、Fragment勋陪、Intent也必須掌握贪磺。
- 掌握android 基本布局和控件的屬性和使用,常用布局有LinearLayout\RelativeLayout\ConstraintLayout等诅愚,控件有TextView\ImageView\RecyclerView\ScrollView等寒锚。
- 對(duì)android的資源訪問(wèn)使用有基本了解,了解android針對(duì)不同國(guó)家违孝、語(yǔ)言刹前、屏幕、API的適配原理雌桑。
- 掌握android系統(tǒng)服務(wù)和工具類的使用喇喉,對(duì)網(wǎng)絡(luò)訪問(wèn)和數(shù)據(jù)庫(kù)操作有基本認(rèn)知。
-
熟練掌握研發(fā)工具校坑,如IDE拣技、模擬器千诬、網(wǎng)絡(luò)代理、日志等膏斤。
中級(jí)
而到達(dá)中級(jí)就需要付出一些努力了徐绑,需要了解更多知識(shí),可以仿照開源庫(kù)去造輪子練習(xí)莫辨。中級(jí)工程師要能夠熟練完成功能研發(fā)傲茄。需要的技能有:
- 熟悉SOLID基礎(chǔ)設(shè)計(jì)原則,掌握23種設(shè)計(jì)模式沮榜。
- 對(duì)于研發(fā)語(yǔ)言特性java/kotlin有深入理解盘榨,如反射、動(dòng)態(tài)代理敞映、apt等较曼。
- 對(duì)android架構(gòu)有基礎(chǔ)了解,對(duì)apk結(jié)構(gòu)和打包原理有深入了解振愿。
- 對(duì)于android各個(gè)版本特性有基本了解捷犹,如MD設(shè)計(jì)、權(quán)限管理冕末、doze模式等萍歉。
- 熟練掌握各種研發(fā)調(diào)試工具,如git档桃、gradle枪孩、mat、layout inspector等藻肄。
- 掌握Handler\AsyncTask原理蔑舞,熟悉多線程開發(fā)。
- 對(duì)繪頁(yè)面制原理有初步理解嘹屯,能夠?qū)崿F(xiàn)一個(gè)復(fù)雜自定義控件攻询。
- 能夠熟練掌握開源庫(kù)的使用,如圖片庫(kù)(Glide\Fresco)州弟、網(wǎng)絡(luò)庫(kù)(Volley\okhttp\Retrofit)钧栖、工具(Dagger\RxJava\EventBus)等。
- 熟悉圖片優(yōu)化常用方法婆翔,避免編寫內(nèi)存泄漏的代碼拯杠。
高級(jí)
如果到達(dá)中級(jí),那么恭喜你已經(jīng)可以應(yīng)付大部分情況了啃奴。但要能更進(jìn)一步潭陪,就需要深入理解android系統(tǒng)的運(yùn)行原理,達(dá)到融會(huì)貫通纺腊,可以作為android端上的架構(gòu)師畔咧。需要的技能有:
- 掌握java高級(jí)特性茎芭,如JUC、線程池誓沸、NIO\BIO等梅桩;掌握jvm虛擬機(jī)知識(shí),如內(nèi)存模型拜隧、GC原理宿百、類加載機(jī)制、線程模型等洪添。
- 對(duì)android運(yùn)行環(huán)境有深入理解垦页,理解android沙盒機(jī)制,掌握AIDL原理及Binder通信原理干奢,了解app和activity啟動(dòng)原理痊焊。
- 掌握熱修復(fù)原理,各大廠商方案的優(yōu)缺點(diǎn)忿峻。
- 對(duì)于android事件分發(fā)有深入理解薄啥,重點(diǎn)掌握觸摸事件機(jī)制。
- 深入理解android繪制原理逛尚,理解VSYNC和surface機(jī)制和窗口原理垄惧。
- 深入理解android動(dòng)畫原理,包括補(bǔ)間動(dòng)畫和屬性動(dòng)畫绰寞。
- 對(duì)于android安全機(jī)制有基本認(rèn)知到逊,理解android安全原理。
- 深入理解端上設(shè)計(jì)范式思想滤钱,如mvc\mvp\mvvm\clean-arch等觉壶。
- 理解架構(gòu)演進(jìn),有良好的分層和拆分思路件缸,掌握模塊化掰曾、插件化、動(dòng)態(tài)部署等停团。
- 對(duì)新技術(shù)敏感,理解掌握下一代架構(gòu)dynamic feature等掏熬。
至此佑稠,android端研發(fā)你已經(jīng)爐火純青,能夠面對(duì)各種情況旗芬,達(dá)到泰山崩于前而色不變的境界舌胶。如果還想繼續(xù)前進(jìn),就需要突破技術(shù)棧疮丛,從更高架構(gòu)層次考慮問(wèn)題幔嫂。
資深
而到了資深層次辆它,技術(shù)棧已經(jīng)不再是阻礙。能夠從更高層面看待問(wèn)題履恩,理解整個(gè)系統(tǒng)的設(shè)計(jì)锰茉,作為系統(tǒng)架構(gòu)師的角色存在。
- 理解微服務(wù)切心、SOA思想飒筑,對(duì)于后端開發(fā)有一定涉獵。
- 了解前端研發(fā)工具和思想绽昏,知道vue react等研發(fā)框架协屡。
- 深入理解跨端技術(shù),如phonegap全谤、weex/RN flutter肤晓、小程序快應(yīng)用等。
學(xué)習(xí)路線及學(xué)習(xí)分享
對(duì)于很多初級(jí)Android工程師而言认然,想要提升技能补憾,往往是自己摸索成長(zhǎng),不成體系的學(xué)習(xí)效果低效漫長(zhǎng)且無(wú)助季眷。整理的這些架構(gòu)技術(shù)希望對(duì)Android開發(fā)的朋友們有所參考以及少走彎路余蟹,本文的重點(diǎn)是你有沒(méi)有收獲與成長(zhǎng),其余的都不重要子刮,希望讀者們能謹(jǐn)記這一點(diǎn)威酒。同時(shí),我整理了一些關(guān)于flutter—性能優(yōu)化—移動(dòng)架構(gòu)—資深UI工程師 —NDK相關(guān)專業(yè)人員和視頻教學(xué)資料挺峡,還有更多面試題等你來(lái)拿~
需要資料可以點(diǎn)擊鏈接https://jq.qq.com/?_wv=1027&k=5dEYsBU