2019年Android開發的將來發展方向該如何走?

做爲一名資深的Android 開發者。從2017年下半年開始,就聽到各類言論,例如「Android 開發涼涼」、「移動端開發沒出路了趕忙轉行」、「要被XXX 替代了」 等等,充分反映了你們焦慮的心態。前端

移動端開發真的要涼涼了嗎?也常常有粉絲私信我,在羣裏聊起這個話題,今天我決定寫下本身的一些見解,供你們參考面試

移動端開發的現狀

移動端開發的現狀是什麼?咱們能夠從本身寫的代碼中尋找線索。以Android 爲例,不少大公司的移動端開發者寫的最多的代碼是這樣的:數據庫

LinearLayout layout = new LinearLayout;
layout.addView( xxxx );
...

或者也許是這樣的:小程序

public class XXXView extends RelativeLayout {
    public XXXView( Context context )
    {
        this(context, null);
    }
    public XXXView( Context context,
            @Nullable AttributeSet attrs )
    {
        this(context, attrs, 0);
    }
    public XXXView( Context context, @Nullable AttributeSet attrs, int defStyleAttr )
    {
        super(context, attrs, defStyleAttr);
        initView;
    }
    private void initView {
        LayoutInflater.from( getContext ).inflate( R.layout.xxxlayout, this, true );
        ...
    }
    public void setData( XXX xxx )
    {
        ...
    }

又或者是對着xml 標籤作出各類騷操做——UI 開發。後端

沒錯,現在移動端技術棧已經愈發趨於成熟完善,對業務來講,就連大公司的工程師也是在作UI 的展現邏輯。大公司產品相對比較完善,後端管控了大部分業務邏輯,客戶端作的就是取到後端的數據,而後經過setText(xxx)展現出來,而後經過接口返回的Boolean 值來判斷View 顯示仍是隱藏。緩存

我聽到不少人說,工做幾年感受本身沒什麼提高,每天都在堆代碼,隨便找個剛畢業的學生也能分分鐘替代本身,因而就很焦慮。那對於工做幾年的人來講,要想盡量不讓本身過早的被替代、被淘汰,就須要選一個有潛力的有前景的領域深挖。網絡

那麼移動端開發的將來在哪裏?

動態化架構

在聊動態化以前,咱們先聊聊Android 的插件化。框架

前兩年,插件化火起來了。爲何火?由於能夠實現Android 應用不發版本的同時動態上線需求,同時熱修復還能夠動態的修復線上出現的bug。可是插件化存在最大的問題是什麼呢?兼容性。Android 機型太多太複雜,插件化框架不免會涉及到系統API 的hook,兼容性問題就出現了,開發者會看到莫名其妙的錯誤上報上來卻一籌莫展。機器學習

隨着Android 版本的迭代更新,插件化這條路愈來愈很差走,Android P給了開發者們一個信號:別隨便hook 系統API 了,Google 要開始收口整頓了。插件化這條路註定沒法一直走下去,因而開發者們另闢蹊徑。

最開始是繼續用H5 混合開發的方式,例如老牌Hybrid 框架Cordova,可是性能不盡人意。這時候Facebook 開發出了一個跨時代的框架:React-Native。它提供了一個全新的思路:經過jscore 進行js 解析,使用原生的View 進行渲染,提供橋機制調用原生的能力。

React-Native 是第一個真正的高性能的動態化框架,它的出現讓Web 前端和客戶端的界限迅速變得模糊。隨之而來的是各大公司的自研框架,例如阿里巴巴的Weex 和美團點評的Picasso 框架。React-Native 只提供了Android 和iOS 的雙端支持,Weex 擴展了思路,提供的Web 端的支持,一個是React 語法糖,一個是Vue 語法糖。Picasso 又不同,Picasso 是純TS,DSL 語法樹,寫法實在太簡單,又準備在三端的基礎上提供小程序端的支持。

2018年GMTC 大會上,Flutter 發佈了第一個預覽版,阿里巴巴閒魚團隊已經在閒魚APP 中使用了Flutter技術。Flutter四年前開始開發,直到去年纔有第一個beta 版本。經過Dart 編寫APP,而後編譯成機器碼同時運行在Android 和iOS 上,作到了原生跨平臺,Hot Reload,性能很不錯,可定製性也很是強,連封裝的系統層Dart 代碼都能改。提供了Web、iOS、Android、React-Native 開發者學習Flutter 的入門文檔,也是去年移動端少數的幾個比較火的熱點之一。它的思路不一樣於React-Native,是一種全新的思路,目前我對Flutter 持樂觀態度。

支付寶的動態方式不一樣於以上全部,它是徹底基於本身的H5 容器進行Hybrid 開發,不過因爲內核也是自研的(UC 內核),因此性能各方面都比原生的WebView 好,支付寶裏很是多的頁面都是基於H5 容器開發的,包括支付寶小程序,這也算是一種動態化的方式吧,只不過研發成本過高:自研WebView 內核。

目前來看,動態化的三駕馬車已經初步造成:

  • React-Native 爲首的jscore(v8)橋通訊動態化方案;
  • 自研WebView 內核,H5 容器化方案;
  • Flutter(我以爲Flutter 正在發力爭取第三駕馬車的位置)。

動態化改變了移動開發的方式,模糊了Web 前端和客戶端的界限,讓愈來愈多的人認識了什麼是「大前端」。若是有經驗的開發者們對這個方向進行深刻研究,五年內,應該不會被淘汰了(笑)。

移動端機器學習

毫無疑問,移動端機器學習從2017年年末就開始火起來了,TensorFlow 也推出了移動端框架,不少應用都開始在移動端部署機器學習模型,例如相機類應用(FaceU)、電商類應用(惟品會)等,包括離線的機器學習。

若是深挖這個方向,我以爲十年內不會被淘汰。固然了,難度也不小。

AR & VR

從支付寶的AR 搶紅包、QQ 的AR 踢球等玩法被愈來愈多的人體驗,AR 走進了人們的視野。對於廣告引流玩法來講,AR 無疑是能帶來巨大收益的。

此前大衆點評親子上線了「親子奇妙日」 活動,就是基於大頭兒子小頭爸爸的AR 玩法。那麼開發AR 引擎的移動開發者天然成了香餑餑,目前AR 主要應用的領域仍是廣告變現,不過不少公司也找到了AR 的一些落地場景,好比賣傢俱的電商公司能夠經過AR 技術讓用戶在購買以前就能看到實物在本身家裏到底能不能放得下,這能極大的提高用戶的購買體驗。

若是是研究OpenGL、計算機圖形學的移動開發者,能夠往AR 引擎開發方向發展,很是有前景。

VR 同理。

移動端音視頻

這個領域最火的產品當之無愧是抖音了,就連我本身都每天刷抖音。除了抖音,還有各大視頻應用,都須要音視頻開發領域的專業開發人員,圖像處理、濾鏡、裁剪等等騷操做都是須要專業的音視頻開發知識才能作出來的,研究OpenGL、計算機圖形學的移動開發者在這個領域也有很大的優點。

據我所知,這方面人才如今缺口依然很大,各大公司求賢若渴,若是在這方面有經驗而且願意深挖的同窗,天然是各大公司的香餑餑啦。

移動端區塊鏈

區塊鏈,2018年最火的技術沒有之一。

從人人都在談比特幣到人人都在談區塊鏈,能夠看出區塊鏈技術已經被愈來愈多人熟知。無數區塊鏈公司如雨後春筍般的冒出,連大公司們也按捺不住開始涉足區塊鏈領域。對於移動端來講,區塊鏈應用最多的仍是數字錢包。可是將來移動端區塊鏈必定會有更多的落地應用,例如Status。區塊鏈去年大火,移動端的區塊鏈應用還沒開始火,可是也不遠了。

若是有移動開發同窗對區塊鏈方向感興趣的,能夠開始研究起來了。若是要學習智能合約開發的同窗,我推薦一個很是好的網站:Cryptozombies,絕對是入門solidity 智能合約開發的精品。

目前移動端的區塊鏈人才還很少,各大公司也沒有在招,可是兩三年內,應該就會爆發了,如今還在探索落地場景的階段,也給了對區塊鏈技術感興趣的移動開發同窗學習的時間。改變世界的技術瞭解一下?

移動基礎框架

UI 將來可能都會被動態化技術接管,可是移動基礎框架不會。但凡要開發一個APP,網絡請求、日誌處理、數據庫處理、緩存、Push 等框架都是不可或缺的,這部分和UI 關係不大,又是APP 的命脈所在。

只要APP 存在,基礎框架就存在。有同窗可能要說了,我用okhttp 分分鐘寫一個網絡請求出來,沒錯,這是okhttp 已經幫咱們作好了不少事。什麼是框架?用一句話總結,個人理解就是:

一種可讓能力差異較大的開發者寫出功能、性能差很少的代碼的庫。

不知道你們能不能理解這種說法,我舉個例子:若是使用HttpUrlConnection 來寫網絡請求,可能不一樣能力的開發者寫出來的代碼不同,網絡請求的性能和效果也不同。可是若是使用了okhttp 庫,只要看一看okhttp 的文檔,新手和老手寫出來的代碼估計差很少,性能和效果也差很少,這就是框架作出的最大的貢獻。

在這些框架的基礎上,P5 寫的代碼可能和P六、P7 區別不會多大。然而,這些框架總要有人開發,開源的框架每每不能知足公司業務的需求,須要自研基礎框架。尤爲是BAT、TMD 六家公司,移動端框架有大部分都是自研的,愈來愈多的公司也開始自研,因此若是是在這個方向有經驗的移動開發者,在APP 被淘汰以前,應該都不會被淘汰。這方面對移動開發者的知識深度和廣度都要求相對較高,須要沉澱和學習。

Android 工具類應用

這個就比較特殊了,這類應用我舉個例子:360 手機助手。對於Android 用戶來講,清理內存、清理垃圾等已經成爲了一種習慣,這方面應用的開發天然是不可少的,並且很是考驗對Android 知識的深度,大家懂得。

結語

上面七個移動端開發方向,是我總結出來的有潛力有前景的方向,各位移動開發同窗能夠參考,能夠選擇一個方向進行深挖,相信必定會有收穫。

嘴上焦慮是沒有意義的,最好的辦法就是付出行動。

Android學習PDF+架構視頻+面試文檔+源碼筆記

在這裏我也分享一份本身收錄整理的Android學習PDF+架構視頻+面試文檔+源碼筆記,還有高級架構技術進階腦圖、Android開發面試專題資料,高級進階架構資料幫助你們學習提高進階,也節省你們在網上搜索資料的時間來學習,也能夠分享給身邊好友一塊兒學習

若是你有須要的話,能夠點贊,而後加入Android開發交流羣(820198451)免費領取

image

image

相關文章
相關標籤/搜索