作為一名資深的Android 開(kāi)發(fā)者。從2017年下半年開(kāi)始,就聽(tīng)到各種言論,例如“Android 開(kāi)發(fā)涼涼”、“移動(dòng)端開(kāi)發(fā)沒(méi)出路了趕緊轉(zhuǎn)行”、“要被XXX 替代了” 等等,充分反映了大家焦慮的心態(tài)。 移動(dòng)端開(kāi)發(fā)真的要涼涼了嗎?也經(jīng)常有粉絲私信我,在群里聊起這個(gè)話(huà)題,今天我決定寫(xiě)下自己的一些看法,供大家參考 移動(dòng)端開(kāi)發(fā)的現(xiàn)狀移動(dòng)端開(kāi)發(fā)的現(xiàn)狀是什么?我們可以從自己寫(xiě)的代碼中尋找線(xiàn)索。以Android 為例,很多大公司的移動(dòng)端開(kāi)發(fā)者寫(xiě)的最多的代碼是這樣的:
或者也許是這樣的:
又或者是對(duì)著xml 標(biāo)簽做出各種騷操作——UI 開(kāi)發(fā)。 沒(méi)錯(cuò),如今移動(dòng)端技術(shù)棧已經(jīng)愈發(fā)趨于成熟完善,對(duì)業(yè)務(wù)來(lái)說(shuō),就連大公司的工程師也是在做UI 的展示邏輯。大公司產(chǎn)品相對(duì)比較完善,后端管控了大部分業(yè)務(wù)邏輯,客戶(hù)端做的就是取到后端的數(shù)據(jù),然后通過(guò)setText(xxx)展示出來(lái),然后通過(guò)接口返回的Boolean 值來(lái)判斷View 顯示還是隱藏。 我聽(tīng)到很多人說(shuō),工作幾年感覺(jué)自己沒(méi)什么提升,天天都在堆代碼,隨便找個(gè)剛畢業(yè)的學(xué)生也能分分鐘替代自己,于是就很焦慮。那對(duì)于工作幾年的人來(lái)說(shuō),要想盡可能不讓自己過(guò)早的被替代、被淘汰,就需要選一個(gè)有潛力的有前景的領(lǐng)域深挖。 那么移動(dòng)端開(kāi)發(fā)的未來(lái)在哪里?動(dòng)態(tài)化 在聊動(dòng)態(tài)化之前,我們先聊聊Android 的插件化。 前兩年,插件化火起來(lái)了。為什么火?因?yàn)榭梢詫?shí)現(xiàn)Android 應(yīng)用不發(fā)版本的同時(shí)動(dòng)態(tài)上線(xiàn)需求,同時(shí)熱修復(fù)還可以動(dòng)態(tài)的修復(fù)線(xiàn)上出現(xiàn)的bug。但是插件化存在最大的問(wèn)題是什么呢?兼容性。Android 機(jī)型太多太復(fù)雜,插件化框架難免會(huì)涉及到系統(tǒng)API 的hook,兼容性問(wèn)題就出現(xiàn)了,開(kāi)發(fā)者會(huì)看到莫名其妙的錯(cuò)誤上報(bào)上來(lái)卻束手無(wú)策。 隨著Android 版本的迭代更新,插件化這條路越來(lái)越不好走,Android P給了開(kāi)發(fā)者們一個(gè)信號(hào):別隨便hook 系統(tǒng)API 了,Google 要開(kāi)始收口整頓了。插件化這條路注定無(wú)法一直走下去,于是開(kāi)發(fā)者們另辟蹊徑。 最開(kāi)始是繼續(xù)用H5 混合開(kāi)發(fā)的方式,例如老牌Hybrid 框架Cordova,但是性能不盡人意。這時(shí)候Facebook 開(kāi)發(fā)出了一個(gè)跨時(shí)代的框架:React-Native。它提供了一個(gè)全新的思路:通過(guò)jscore 進(jìn)行js 解析,使用原生的View 進(jìn)行渲染,提供橋機(jī)制調(diào)用原生的能力。 React-Native 是第一個(gè)真正的高性能的動(dòng)態(tài)化框架,它的出現(xiàn)讓W(xué)eb 前端和客戶(hù)端的界限迅速變得模糊。隨之而來(lái)的是各大公司的自研框架,例如阿里巴巴的Weex 和美團(tuán)點(diǎn)評(píng)的Picasso 框架。React-Native 只提供了Android 和iOS 的雙端支持,Weex 擴(kuò)展了思路,提供的Web 端的支持,一個(gè)是React 語(yǔ)法糖,一個(gè)是Vue 語(yǔ)法糖。Picasso 又不一樣,Picasso 是純TS,DSL 語(yǔ)法樹(shù),寫(xiě)法實(shí)在太簡(jiǎn)單,又準(zhǔn)備在三端的基礎(chǔ)上提供小程序端的支持。 2018年GMTC 大會(huì)上,Flutter 發(fā)布了第一個(gè)預(yù)覽版,阿里巴巴閑魚(yú)團(tuán)隊(duì)已經(jīng)在閑魚(yú)APP 中使用了Flutter技術(shù)。Flutter四年前開(kāi)始開(kāi)發(fā),直到去年才有第一個(gè)beta 版本。通過(guò)Dart 編寫(xiě)APP,然后編譯成機(jī)器碼同時(shí)運(yùn)行在Android 和iOS 上,做到了原生跨平臺(tái),Hot Reload,性能很不錯(cuò),可定制性也非常強(qiáng),連封裝的系統(tǒng)層Dart 代碼都能改。提供了Web、iOS、Android、React-Native 開(kāi)發(fā)者學(xué)習(xí)Flutter 的入門(mén)文檔,也是去年移動(dòng)端少數(shù)的幾個(gè)比較火的熱點(diǎn)之一。它的思路不同于React-Native,是一種全新的思路,目前我對(duì)Flutter 持樂(lè)觀態(tài)度。 支付寶的動(dòng)態(tài)方式不同于以上所有,它是完全基于自己的H5 容器進(jìn)行Hybrid 開(kāi)發(fā),不過(guò)由于內(nèi)核也是自研的(UC 內(nèi)核),所以性能各方面都比原生的WebView 好,支付寶里非常多的頁(yè)面都是基于H5 容器開(kāi)發(fā)的,包括支付寶小程序,這也算是一種動(dòng)態(tài)化的方式吧,只不過(guò)研發(fā)成本太高:自研WebView 內(nèi)核。 目前來(lái)看,動(dòng)態(tài)化的三駕馬車(chē)已經(jīng)初步形成:
動(dòng)態(tài)化改變了移動(dòng)開(kāi)發(fā)的方式,模糊了Web 前端和客戶(hù)端的界限,讓越來(lái)越多的人認(rèn)識(shí)了什么是“大前端”。如果有經(jīng)驗(yàn)的開(kāi)發(fā)者們對(duì)這個(gè)方向進(jìn)行深入研究,五年內(nèi),應(yīng)該不會(huì)被淘汰了(笑)。 移動(dòng)端機(jī)器學(xué)習(xí) 毫無(wú)疑問(wèn),移動(dòng)端機(jī)器學(xué)習(xí)從2017年年底就開(kāi)始火起來(lái)了,TensorFlow 也推出了移動(dòng)端框架,很多應(yīng)用都開(kāi)始在移動(dòng)端部署機(jī)器學(xué)習(xí)模型,例如相機(jī)類(lèi)應(yīng)用(FaceU)、電商類(lèi)應(yīng)用(唯品會(huì))等,包括離線(xiàn)的機(jī)器學(xué)習(xí)。 如果深挖這個(gè)方向,我覺(jué)得十年內(nèi)不會(huì)被淘汰。當(dāng)然了,難度也不小。 AR & VR 從支付寶的AR 搶紅包、QQ 的AR 踢球等玩法被越來(lái)越多的人體驗(yàn),AR 走進(jìn)了人們的視野。對(duì)于廣告引流玩法來(lái)說(shuō),AR 無(wú)疑是能帶來(lái)巨大收益的。 此前大眾點(diǎn)評(píng)親子上線(xiàn)了“親子奇妙日” 活動(dòng),就是基于大頭兒子小頭爸爸的AR 玩法。那么開(kāi)發(fā)AR 引擎的移動(dòng)開(kāi)發(fā)者自然成了香餑餑,目前AR 主要應(yīng)用的領(lǐng)域還是廣告變現(xiàn),不過(guò)很多公司也找到了AR 的一些落地場(chǎng)景,比如賣(mài)家具的電商公司可以通過(guò)AR 技術(shù)讓用戶(hù)在購(gòu)買(mǎi)之前就能看到實(shí)物在自己家里到底能不能放得下,這能極大的提升用戶(hù)的購(gòu)買(mǎi)體驗(yàn)。 如果是研究OpenGL、計(jì)算機(jī)圖形學(xué)的移動(dòng)開(kāi)發(fā)者,可以往AR 引擎開(kāi)發(fā)方向發(fā)展,非常有前景。 VR 同理。 移動(dòng)端音視頻 這個(gè)領(lǐng)域最火的產(chǎn)品當(dāng)之無(wú)愧是抖音了,就連我自己都天天刷抖音。除了抖音,還有各大視頻應(yīng)用,都需要音視頻開(kāi)發(fā)領(lǐng)域的專(zhuān)業(yè)開(kāi)發(fā)人員,圖像處理、濾鏡、裁剪等等騷操作都是需要專(zhuān)業(yè)的音視頻開(kāi)發(fā)知識(shí)才能做出來(lái)的,研究OpenGL、計(jì)算機(jī)圖形學(xué)的移動(dòng)開(kāi)發(fā)者在這個(gè)領(lǐng)域也有很大的優(yōu)勢(shì)。 據(jù)我所知,這方面人才現(xiàn)在缺口依然很大,各大公司求賢若渴,如果在這方面有經(jīng)驗(yàn)并且愿意深挖的同學(xué),自然是各大公司的香餑餑啦。 移動(dòng)端區(qū)塊鏈 區(qū)塊鏈,2018年最火的技術(shù)沒(méi)有之一。 從人人都在談比特幣到人人都在談區(qū)塊鏈,可以看出區(qū)塊鏈技術(shù)已經(jīng)被越來(lái)越多人熟知。無(wú)數(shù)區(qū)塊鏈公司如雨后春筍般的冒出,連大公司們也按捺不住開(kāi)始涉足區(qū)塊鏈領(lǐng)域。對(duì)于移動(dòng)端來(lái)說(shuō),區(qū)塊鏈應(yīng)用最多的還是數(shù)字錢(qián)包。但是未來(lái)移動(dòng)端區(qū)塊鏈一定會(huì)有更多的落地應(yīng)用,例如Status。區(qū)塊鏈去年大火,移動(dòng)端的區(qū)塊鏈應(yīng)用還沒(méi)開(kāi)始火,但是也不遠(yuǎn)了。 如果有移動(dòng)開(kāi)發(fā)同學(xué)對(duì)區(qū)塊鏈方向感興趣的,可以開(kāi)始研究起來(lái)了。如果要學(xué)習(xí)智能合約開(kāi)發(fā)的同學(xué),我推薦一個(gè)非常好的網(wǎng)站:Cryptozombies,絕對(duì)是入門(mén)solidity 智能合約開(kāi)發(fā)的精品。 目前移動(dòng)端的區(qū)塊鏈人才還不多,各大公司也沒(méi)有在招,但是兩三年內(nèi),應(yīng)該就會(huì)爆發(fā)了,現(xiàn)在還在探索落地場(chǎng)景的階段,也給了對(duì)區(qū)塊鏈技術(shù)感興趣的移動(dòng)開(kāi)發(fā)同學(xué)學(xué)習(xí)的時(shí)間。改變世界的技術(shù)了解一下? 移動(dòng)基礎(chǔ)框架 UI 未來(lái)可能都會(huì)被動(dòng)態(tài)化技術(shù)接管,但是移動(dòng)基礎(chǔ)框架不會(huì)。但凡要開(kāi)發(fā)一個(gè)APP,網(wǎng)絡(luò)請(qǐng)求、日志處理、數(shù)據(jù)庫(kù)處理、緩存、Push 等框架都是不可或缺的,這部分和UI 關(guān)系不大,又是APP 的命脈所在。 只要APP 存在,基礎(chǔ)框架就存在。有同學(xué)可能要說(shuō)了,我用okhttp 分分鐘寫(xiě)一個(gè)網(wǎng)絡(luò)請(qǐng)求出來(lái),沒(méi)錯(cuò),這是okhttp 已經(jīng)幫我們做好了很多事。什么是框架?用一句話(huà)總結(jié),我的理解就是: 一種可以讓能力差別較大的開(kāi)發(fā)者寫(xiě)出功能、性能差不多的代碼的庫(kù)。 不知道大家能不能理解這種說(shuō)法,我舉個(gè)例子:如果使用HttpUrlConnection 來(lái)寫(xiě)網(wǎng)絡(luò)請(qǐng)求,可能不同能力的開(kāi)發(fā)者寫(xiě)出來(lái)的代碼不一樣,網(wǎng)絡(luò)請(qǐng)求的性能和效果也不一樣。但是如果使用了okhttp 庫(kù),只要看一看okhttp 的文檔,新手和老手寫(xiě)出來(lái)的代碼估計(jì)差不多,性能和效果也差不多,這就是框架做出的最大的貢獻(xiàn)。 在這些框架的基礎(chǔ)上,P5 寫(xiě)的代碼可能和P6、P7 區(qū)別不會(huì)多大。然而,這些框架總要有人開(kāi)發(fā),開(kāi)源的框架往往不能滿(mǎn)足公司業(yè)務(wù)的需求,需要自研基礎(chǔ)框架。尤其是BAT、TMD 六家公司,移動(dòng)端框架有大部分都是自研的,越來(lái)越多的公司也開(kāi)始自研,所以如果是在這個(gè)方向有經(jīng)驗(yàn)的移動(dòng)開(kāi)發(fā)者,在APP 被淘汰之前,應(yīng)該都不會(huì)被淘汰。這方面對(duì)移動(dòng)開(kāi)發(fā)者的知識(shí)深度和廣度都要求相對(duì)較高,需要沉淀和學(xué)習(xí)。 Android 工具類(lèi)應(yīng)用 這個(gè)就比較特殊了,這類(lèi)應(yīng)用我舉個(gè)例子:360 手機(jī)助手。對(duì)于Android 用戶(hù)來(lái)說(shuō),清理內(nèi)存、清理垃圾等已經(jīng)成為了一種習(xí)慣,這方面應(yīng)用的開(kāi)發(fā)自然是不可少的,而且非常考驗(yàn)對(duì)Android 知識(shí)的深度,你們懂得。 結(jié)語(yǔ)上面七個(gè)移動(dòng)端開(kāi)發(fā)方向,是我總結(jié)出來(lái)的有潛力有前景的方向,各位移動(dòng)開(kāi)發(fā)同學(xué)可以參考,可以選擇一個(gè)方向進(jìn)行深挖,相信一定會(huì)有收獲。 嘴上焦慮是沒(méi)有意義的,最好的辦法就是付出行動(dòng)。 |
|
來(lái)自: 印度阿三17 > 《開(kāi)發(fā)》