自身技術過硬就有前景,混日子就沒前景,好好學吧...

高爺:Android 開發者學習路線(2020 版)?

zhuanlan.zhihu.com圖標

Android開發的現狀

目前,移動開發已經處於飽和的階段,Android開發也不如當年盛況,已經不再像前幾年前那麼火爆。正如一種編程語言如果經歷過盛極一時,那麼必然有這樣的一條曲線,像我們學的正弦曲線先急速上升,然後到達頂點,然後再下降,最後再趨近一個平穩的值。

可以看到,從2016年的下半年開始,移動互聯網基本處於緩慢發展的階段,很多大佬稱之為互聯網的下半場。如果移動互聯網的前半場是粗放式的強地盤階段,那麼下半場就是守地盤的階段,這一階段,會出現眾多的寡頭。

在技術上,相比之前之前面試只問Android四大組件,資料庫,網路和項目經驗不同,現在面試Android崗位會設計各種原理(包括系統的一些原理以及第三方庫的原理及流程)、Android優化以及與Android相關的跨平臺技術。除此之外,稍微大點的公司還會對App的用戶體驗、流暢度等等提出要求,所以說,Android的面試已經不可同日而語。

Android開發的未來

移動操作系統的演變過程,從按鍵交互的塞班功能機到觸摸屏交互的Android/IOS智能機,從小屏幕手機到全面屏、劉海屏、水滴屏。總結一下,任何系統無非幹兩件事:輸入和輸出,接收到外部輸入信號後經過操作系統處理後輸出信息。

Android發展至今,已成為全球用戶量最廣泛的移動操作系統,手機行業競爭異常激烈,經過幾番洗牌,國內手機廠商主要是華米OV四大公司,並且隨著移動互聯網增長見頂,國內Android開發的需求也越來越少,那麼Android的未來在哪裡呢?

目前,Android在應用層次的發展已經見頂,未來的發展主要集中在人工智慧和5G結合的產業,智能汽車、智能家居、IOT都將是Android發展的廣闊市場。但就目前人工智慧的奇點還沒到來,技術還處於前期階段,一旦奇點來臨將會爆炸式發展,或將重新定義生活方式。汽車的智能化和互聯網化是未來一大趨勢,Google這兩年確實在汽車領域發力,Android Auto在過去一年的用戶增長250%。天生的移動特性加上越來越多的互聯網服務需求,汽車需要一個具備多種感知能力的系統,或將成為是繼手機、電視後Android的下一重點開拓領域。

對於Android開發人員來說,我有以下幾點建議:

  • 在Android領域深耕,做到極致,努力成為這個方向的專家,提升工程架構思維和能力,因為軟體工程思想都是相通的。只要一個領域做到極致,即便Android被淘汰了,換新領域面試官依然會相信你也能做到極致。
  • 在有深度的情況下,適當拓寬自己的廣度,在每完成一個項目後就進行總結,並能夠熟知整個系統的整體架構,對核心有深刻的認知。

在這個日異月新的時代,不光需要Follow一線技術,更重要的是要引領時代,才能在技術快速發展的階段不被淘汰,才能在下一次技術革命中抓住機會。

這裡列舉一些Android熱門技術:

總結

說一千道一萬,不如自己去行動。要想在移動互聯網的下半場是自己佔有一席之地,那就得從現在開始,從今天開始,馬上嚴格要求自己,既重視業務實現能力,也重視基礎和原理。基礎夯實好了,高樓纔能夠平地而起,穩如泰山。

推薦閱讀:

Zz瀟曉:遇到瓶頸如何提升自己?Android 最全知識體系總結及學習路線分享給你!?

zhuanlan.zhihu.com圖標

或者可以看一下我這些相關的回答:

如何學習Android,Android學習路線圖??

www.zhihu.com圖標android程序員如何提高自己的核心競爭力??

www.zhihu.com圖標Android開發前景怎麼樣??

www.zhihu.com圖標

最後再分享一下我自己的一個專欄,裡面定期分享Android架構技術知識點及解析,還會不斷更新的BATJ面試專題,以及安卓相關資料免費分享,歡迎大家關注,如有好的文章也歡迎投稿。

Android高級技術分享?

zhuanlan.zhihu.com圖標

天天都有人在說Android市場飽和了。

不是飽和,只是過掉了爆發期,趨於平和了。

天天都有人說Android要涼了。

不是Android要涼了,是你要涼了。

現在的Android開發,不在是十年前你隨便能寫個簡單的APP就能找到工作的年代了。

時代在進步,你原地踏步,卻抱怨經濟不行,就業環境不好。那麼這邊建議穿越回清朝重造一下。

社會缺的不是「CV搬運工」,需要的是創造者。Android高工有多麼搶手,你如果一直呆在底層搬磚,自然是感受不到,自然也就隨波逐流抱怨Android開發飽和,Android涼涼。

奉勸:少喝雞湯,那這焦慮的時間多看看源碼,多學學底層。那都是創始者、前輩們留下的永不過時的東西。

Android開發從零到起飛成長技能樹:

必備Java基礎

泛型

  • 作用於定義
  • 通配符於嵌套
  • Rxjava中的泛型

註解

  • 自定義註解與元註解
  • APT,編譯時註解處理器
  • 插樁
  • 反射,運行時動態獲取註解信息
  • Retrofit

並發線程

  • 線程共享與實現實現
  • CAS原理
  • Android AsyncTask原理

Java虛擬機

  • Dalvik虛擬機
  • CG演算法、機制
  • 內存分配策略

Hook技術動態編程

動態代理模式雙親委託機制JavaIO體系IO操作Dex加密

數據結構及演算法

數據結構

  • 棧和隊列
  • 數組和鏈表,自定義一個動態數組
  • Hash表,及Hash衝突的解決
  • 二叉樹
  • B+ B-樹
  • 基礎排序演算法:重點 快排、歸併排序、堆排序(大根堆、小根堆)
  • 快排的優化
  • 二分查找與變種二分查找
  • 哈夫曼樹、紅黑樹
  • 字元串操作,字元串查找,KMP演算法
  • 圖的BFS、DFS、prim、Dijkstra演算法(高階技能)
  • 經典問題:海量數據的處理 (10億個數中找出最大的10000個數 TOP K問題)

演算法

  • 分治演算法
  • 動態規劃
  • 貪心演算法
  • 分支限界法

Android基礎

  • Android Activity生命週期
  • Application生命週期
  • Android Service、IntentService,Service和組件間通信
  • Activity的onNewIntent
  • Fragment的懶載入實現,參數傳遞與保存
  • ContentProvider實例詳解
  • BroadcastReceiver使用總結
  • Android消息機制
  • Binder機制,共享內存實現原理
  • Android 事件分發機制
  • Android 多線程的實現:Thread、HandlerThread、AsyncTask、IntentService、RxJava
  • ActivityThread工作原理
  • 嵌套滑動實現原理
  • RecyclerView與ListView(緩存原理,區別聯繫,優缺點)
  • View的繪製原理,自定義View,自定義ViewGroup
  • View、SurfaceView 與 TextureView
  • 主線程Looper.loop為什麼不會造成死循環
  • ViewPager的緩存實現
  • requestLayout,invalidate,postInvalidate區別與聯繫
  • AndroidP新特性
  • Android兩種虛擬機
  • ADB常用命令
  • Asset目錄與res目錄的區別
  • Android SQLite的使用入門

Android開發高級

註:

Android高級工程師招聘要求:1.熟悉Android SDK,熟悉Android UI,熟悉Android各種調試工具;2.有豐富的Android應用架構能力,能夠獨立主導並架構App;3.Mobile Web 開發經驗;具備各種複合技能:熟悉iOS、H5、Python、.NET等多種開發語言的優先考慮;4.對Android性能優化,安全,軟體加固,自動化測試有深刻認識;5.博客,開源項目

Android技術難點

AIDL、Binder、多進程、View的繪製流程、事件分發、消息隊列等

這類知識對於定位自己為高級Android工程師的人來說是必須掌握的,同時他也是能鑒別高級和初中級工程師的一塊試金石,其中binder是Android系統進程間通信最重要的手段之一,現階段app的發展離不開多進程的運用,經常會啟動例如定位、推送等需要在後臺開啟動的進程來來保證主進程的內存運行;所以合理的使用多進程也是十分必要的;view的繪製是我們自定義控制項的理論基礎,只有掌握了view是如何繪製的才能個性化的自定義控制項;事件分發一直是Android開發的難點之一,也是必須掌握的;關於handler機制也是android的一塊難點,因為包括Asynctask、系統啟動、Intentservice等底層都是通過handler來實現的,所以掌握後handler機制不僅能提高你的實戰開發能力,更能讓你係統的瞭解整個android系統運作的情況。

Android框架層源碼掌握

  • Android包管理機制,核心PackageManagerService
  • Window管理,核心WindowManagerService
  • Android Activity啟動和管理,核心ActivityManagerService
  • 根Activity工作流程
  • Context關聯類
  • 各種原理,經典第三方庫源碼系列
  • 自定義LayoutManager,RecyclerView中如何自定義LayoutManager
  • VLayout實現原理,即如何自定義LayoutManager
  • Glide載入原理,緩存方案,LRU演算法
  • Retrofit的實現與原理
  • OKHttp3的使用,網路請求中的Intercept
  • EventBus實現原理
  • ButterKnife實現原理
  • RxJava實現原理
  • Dagger依賴注入
  • 熱修復實現原理,解決方案
  • 組件化原理和解決方案

Android進程通信以及多進程開發

Android 多進程和Application關係

經典解決方案:多進程通信解決方案:Andromeda

  • Android動畫機制
  • Android繪圖原理
  • Android頁面恢復

Android的頁面恢復採用以下兩個方法:

  • onSaveInstanceState(Bundle outState)
  • onRestoreInstanceState(Bundle savedInstanceState)

onSaveInstanceState :當Activity容易被系統銷毀時,會觸發該方法。具體的說:

  • 用戶點擊Home鍵
  • 用戶點擊Home鍵,切換到其他應用程序
  • 有電話來了等附加操作

混合開發及Android WebView應用

混合開發涉及到的知識點主要包括:

  • APP調用WebView載入url
  • 掌握WebView的封裝,瞭解所有的WebSettings配置,掌握WebViewClient、* WebChromeClient
  • 掌握WebView和Native雙向通信機制,會自己封裝雙向通信中間件
  • 對WebView的封裝可參考:GitHub: AgentWeb
  • 對通信中間件原理理解:GitHub:webprogress

Gradle,自動化構建,持續集成相關

Android系統

Android Studio編譯過程

其中使用到的編譯工具:

aapt、aidl、Java Compiler、dex、 zipalign

主要步驟描述:

  • 通過aapt打包res資源文件,生成R.java、resources.arsc和res文件(二進位 非二進位如res/raw和pic保持原樣)
  • 處理.aidl文件,生成對應的Java介面文件
  • 通過Java Compiler編譯R.java、Java介面文件、Java源文件,生成.class文件
  • 通過dex命令,將.class文件和第三方庫中的.class文件處理生成classes.dex
  • 通過apkbuilder工具,將aapt生成的resources.arsc和res文件、assets文件和classes.dex一起打包生成apk
  • 通過Jarsigner工具,對上面的apk進行debug或release簽名
  • 通過zipalign工具,將簽名後的apk進行對齊處理。

App啟動載入過程

Android虛擬機 Android App運行的沙箱原則

Android架構

在Android源碼中最重要的三個類:ActivityManagerService/PackageManagerService/View,推薦大家週末的時候可以去閱讀下這部分的源碼,閱讀源碼能提高我們今後設計架構自己代碼的能力,同時也能從底層瞭解整個android系統的運行原理,其他一些比如主線程的消息循環、主線程如何和AMS如何跨進程交互、SystemServer進程中的各種Service的工作方式、AsyncTask的工作原理等。這些知識也是作為一個Android高級開發工程師必須掌握的,不能整天沉溺於ui和四大組件的交互,要站在更高的角度去考慮Android的有些問題。

  • MVC模式
  • MVP模式
  • MVVM模式
  • CLEAN模式
  • 組件化開發
  • 跨平臺開發:Flutter、ReactNative(RN未來要黃,瞭解一下就好)

移動開發外圍

伺服器開發相關

  • SpringBoot技術
  • Restful API開發
  • 網路協議理解:TCP/IP、HTTP/HTTPS、OSI七層協議
  • 授權認證協議: OAuth2.0 等
  • 基本的資料庫技術
  • 數據緩存技術v:Memcached、Redis,Web緩存原理
  • 消息隊列技術
  • 監控、日誌分析技術

前端開發相關

前端開發知識很多,框架層出不窮,本質的東西卻只有以下這些。

  • 核心必備:HTML、CSS、JavaScript
  • 入門提高:瀏覽器兼容性、自定義UI和動效
  • 中級技能:框架層出不窮,當前以vue.js、react.js 為核心
  • 協作開發技能:包管理、模塊化,工具採用 npm、webpack等
  • 高級技能:框架原理源碼研究

開發調試各種工具

  • 性能分析工具:Memory Monitor
  • 性能追蹤及方法執行分析: TraceView
  • 視圖分析:Hierarchy Viewer
  • ApkTool- 用於反向工程Android Apk文件的工具
  • Lint- Android lint工具是一個靜態代碼分析工具
  • Dex2Jar- 使用android .dex和java .class文件的工具

沒有Android系統學習方向的,可以看看參考一下我的:我的Android架構師成長筆記


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

移動端開發前景怎麼樣?也經常有粉絲私信我,在羣裏聊起這個話題,今天我決定寫下自己的一些看法,供大家參考。

第一次看我文章的小夥伴可以關注一下我,順便關注一下我的專欄:Android技術交流,每天更新各種技術乾貨,分享更多最熱程序員圈內事。

Android技術交流?

zhuanlan.zhihu.com圖標

移動端開發的現狀

移動端開發的現狀是什麼?我們可以從自己寫的代碼中尋找線索。以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 寫的代碼可能和P6、P7 區別不會多大。然而,這些框架總要有人開發,開源的框架往往不能滿足公司業務的需求,需要自研基礎框架。尤其是BAT、TMD 六家公司,移動端框架有大部分都是自研的,越來越多的公司也開始自研,所以如果是在這個方向有經驗的移動開發者,在APP 被淘汰之前,應該都不會被淘汰。這方面對移動開發者的知識深度和廣度都要求相對較高,需要沉澱和學習。

    Android 工具類應用

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

    結語

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

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


    謝邀! 騰訊優測助力與企業和個人解決多樣化測試疑難問題,這裡淺談2020年大前端的趨勢預測;希望對您有所幫助。

    騰訊優測?

    newtest.21kunpeng.com

    前端開發的快速發展每年都會給開發者帶來新的關鍵詞。回望一下2019年,小程序的突飛猛進、跨端開發RN生態已經成熟、前端工程化,很多團隊都在建設完備的前端devops工具集…根據2019年大前端的發展進行預測,2020年大前端在5g的環境下,仍將在小程序、跨端開發、前端工程、雲計算方面進行發展

    小程序

    2019 年,各大主流 App 紛紛推出小程序平臺。小程序發展至今,熱度不斷攀升,使各種跨平臺的小程序框架不斷湧現。已有的框架在性能和兼容性方面也在持續優化,結合小程序雲的開發能力,越來越低的開發門檻將持續刺激小程序的發展。只要小程序的流量還在,小程序仍然是明年的焦點和重點投入對象,當前的性能問題,預計也會得到解決,同時,小程序的同構也值得期待,它真實的解決了一部分開發者的痛點,另外,小程序的工程化也會有更多工具支撐。

    跨端開發

    對於跨終端開發,RN狀態通常是成熟的,今年許多團隊改變了他們的調子,以 Flutter為Release,這重新點燃了希望,並使 Flutter前端渴望嘗試。同時,蘋果也發布了新的用戶界面系統——SwiftUI。與此同時,面向網路的SwiftUI已經在開源社區中上路了。安卓的SwiftUI會如何我們也拭目以待。跨終端開發,顫振仍將快速發展,並將有更多的開發者。Flutter on JS、SwiftUIfor WebAndroid上也將是值得期待的開源軟體。騰訊在2019年12月底也推出了自己的開源新生移動跨端開發框架Hippy:支持iOS、安卓,跨終端開發仍然沒有完美的解決方案,需要一步一步的進行迭代。

    前端工程

    在前端編程中,開發人員最重要的基本成就是提高效率,此時前端開發人員將繼續迭代和優化。一些團隊之間也開始協作共建,不管是Web還是小程序項目,從新建項目、開發、聯調、部署、測試、發布、運維到監控統計,都有完善的工具去保證和提效,今後前端工程也會越走越標準化。展望2020年前端的發展,前端工程系統肯定會更加閉環,不像腳手架那麼簡單,而是將集成開發環境(IDE)結合起來,從項目初始化、代碼編寫、配置項、灰度級和發布,打開業務屬性,形成一個完整的閉環。

    雲計算

    雲計算已經再是一個陌生的詞語了,對於大公司而言,真正把業務全部搬到雲上,也只是近兩年的事,而使用原生雲不是遷移伺服器那麼簡單,提到原生雲的應用,不得不提到 「炙手可熱」的Serverless,任何一場互聯網技術大會都不會缺席的話題。Serverless火爆的原因大部分是因為前端,因為Serverless比較完美的支持Node.js,使用 Serverless幫助前端開發者解決了使用Node.js過程中的諸多問題,前端開發不再需要過多關注服務端的運維,運維成本大幅降低,它安全、彈性伸縮、按次收費便宜,試錯的成本也將大大降低。前端開發者只需要專註於業務的開發,專註於業務邏輯的實現,需要關心的事情變少,能做的事情更多。Serverless也必將對前端的研發模式產生變革,隨著Node.js成為前端開發者必備技能之後,雲計算不斷普及讓Serverless觸手可及,一些前端能搞定的後臺任務,站在研發效率的角度,都應決策讓前端開發者全棧搞定。

    5g

    5G到底會給Web前端開發帶來哪些變革?首先,5G帶寬的大幅提升帶來傳統Web頁面複雜度的進一步提升,如同2G到4G變革過程中頁面從WAP的純文本超鏈接時代變革到4G全圖片視頻時代,5G對於頁面的變革必將是巨大的,但肯定不會一蹴而就,因為相應的配套設施也需要逐步完善,如硬體性能和瀏覽器的處理速度,而服務端渲染(SSR)肯定是其中一個捷徑,輕前端重後臺,5G是橋樑,把渲染放後臺,就已經不是同構那麼簡單,需要關注和優化渲染性能,由於它可以無縫對接後臺多種語言,WebAssembly或許會在這個機遇下得到快速發展,而後臺渲染的優化也會帶來前端頁面研發模式和技術架構的變革;其次,5G帶來的萬物互聯,又將帶來有別於智能手機和普通PC的多樣化新的應用場景,VR、可穿戴設備、車載系統、智能投影、智能交互等等又會把Web帶入各種各樣的垂直領域,僅僅VR這一項領域就有非常多需要去探索和完善的地方,這也意味著前端將有更多廣闊的空間。

    隨著5g和雲計算的不斷發展,行業對軟體的質量要求越來越高,測試服務也需要更加專業化,優測雲服務平臺是移動雲測試平臺,擁有50餘名測試領域專家,300餘人專業測試團隊,10餘年終端測試服務經驗,提供兼容性測試、自動化測試、雲真機,設備分享等多種服務方式,不僅支持標準能力輸出,也可提供定製化測試解決方案,幫助企業打造完備的DevOps測試體系,以及具有互聯網思維的質量團隊。

    騰訊優測?

    newtest.21kunpeng.com

    騰訊優測是一個移動雲測試平臺,為應用、遊戲、H5混合應用的研發團隊提供產品質量檢測與問題解決服務。不僅在線上平臺提供全面兼容測試、遠程真機租用等多種質量檢測工具,更為VIP客戶配備了專家團隊提供定製化綜合測試解決方案。


    已經轉入大前端領域了。死守安卓這一小塊池子,以後機會越來越少。不能坐井觀天,一直呆在舒適區。


    沒啥前景


    好多回答都是推銷自己回答的,足見安卓是越發沒落了,反正我是真的不想在安卓裏什麼深挖了


    前言

    從2010年開始Android市場開始需要大量的Android開發人員,招聘市場上也開始大量招Android開發人員,大量java開發者開始學習Android開發,招聘市場面試要求上只要有一定java語法基礎,都很容易應聘上Android開發的崗位,因為那時候國內Android開發的需求剛剛起步,從事Android開發的人員很少,到2011-2012年,只要有一年左右的Android開發經驗,那時候在一線城市很容易拿到10K的起步薪資,那時候市場Android開發的市場空缺大概有30萬左右。

    這時候大量軟體培訓公司開始大量培訓Android開發人員,一時大批開發者或者大學畢業生開始湧向移動開發,當然此時也是移動互聯網大勢發展的時候,一大批互聯網創業公司也開始出現,當時號稱只要做個App就可以開始創業了。

    到了2016年年底時,市場上Android的招聘需求大量減少,當然這時候有一批相應的創業公司已經衰退,對應培訓市場上已經不再把Android開發作為熱門核心的培訓科目,到現在創業也不用一開始就做一個App就可以開始了,現在越來越講究精益創業,剛開始推崇最小化可行產品。

    現在越來越講究效益和成本,比如現在只需一個小程序,一個微信公眾號,一個視頻,一個微信羣或者QQ羣,甚至只需要經營你的朋友圈就可以開始你的初期創業想法。

    當然一些新技術的不斷更新與迭代,新技術的層出不窮讓我們本身對Android開發水平還沒有達到理想狀態時已經產生各種焦慮和擔憂,比如前段時間快應用的出現,今年小程序的火爆,各種混合開發,跨平臺開發已經讓我們學習跟不上腳步,就算我們在Android原生開發中也出現各種框架,各種開源庫,以及各種大型項目的構建技術和細分領域的技術比如NDK,音視頻、逆向技術、圖像技術等等已經讓我們應接不暇。

    以上種種讓我們產生了移動Android開發已經涼了,有人有這樣的比喻,現在學習加入Android開發,猶如1949年10月加入GMD。確實移動市場沒有之前的火爆,但是移動開發真的涼了嗎?

    現實狀況

    我的回答是涼還不至於,因為目前是市場趨於穩定正常,這個是市場發展的比如趨勢,現在火爆大家都看好的人工智慧,大數據,猶如2010年剛開始的移動開發。

    目前現在是需求量趨於平衡,對初中級水平的開發人員需求量變少,但是對高級以上的需求市場還是很匱乏,特別是對於特定細分領域的Android開發人員也是很匱乏,對Android開發的綜合能力,特別是基礎原理性要求也越來越高,比如很多公司要求會對對某項要求會優先考慮,比如現在流行的Kotlin,混合開發,跨平臺開發,NDK,高級圖像處理等,市場上很火爆的直播和小視頻對音視頻這個細分領域的高級人才需求量也是比較大的,以至於AI、AR、VR等技術也需要通過終端展示給用戶,所以說移動端開發未來還是會有所作為。

    要求

    所以目前我們要選好自己細分領域深入研究,對基礎原理性內容深入理解,儘快向高級水平靠近並達到。當然也要了解新技術,擁有開放的心態去學習一些新技術,不要一開始出來一個新技術就轉入學習,這樣會導致啥都會一點啥都不會,當然新技術是有一個發展過程的,不會立馬流行和大量應用等它稍微成熟點,這樣你會少踩很多坑,也不要排斥它,完全不去理會和了解學習,正確的方式是簡單瞭解這個技術產生是為瞭解決什麼問題,有什麼優缺點已經目前發展成熟度和應用範圍,我們還是要多抓住技術的本質和基礎,這樣出現了新技術學起來也會很輕鬆,當然機會合適了再去學習它。

    所以,找準自己的定位及細分領域。

    這裡我歸類瞭如下幾類:

    1、應用層開發,不限於各種產品,主要還是Android原生開發,主要是各種性能優化。

    2、嵌入式開發,不限於各種開發板子,物聯網,智能家居,車聯網/車載

    3、安全開發,不限於各種反逆向,反彙編,尋找安全漏洞

    4、音視頻開發,不限於直播、點播、音視頻通話、音視頻會議,短視頻等

    5、插件化、組件化、熱修復開發,不限於自研和使用開源框架集成開發

    6、系統開發(Android),不限於Rom維護和FrameWork層定製需求

    7、圖形圖像開發,不限於OpenGL ES,EGL,GLSurfaceView,濾鏡,美顏

    8、小程序 / 快應用

    小程序是基於微信這個億級流量入口所衍生出來的產品,而快應用,快應用是九大手機廠商基於硬體平臺共同推出的新型應用生態。用戶無需下載安裝,即點即用,享受原生應用的性能體驗,不過個人覺得,他已經涼涼了,小程序倒是挺看好的,騰訊這座大山,微信這座涼亭,你想不涼快都難,不過看你是否剛需,比如你公司有需求,那你可以去學習。

    推薦學習的新技術,Flutter和Kotlin,這兩個都是Google推薦的。

    Flutter

    Flutter是Google在2018年2月27日,在2018世界移動大會上發布的用以幫助開發者在ios和Android兩個平臺開發高質量原生應用的全新移動UI框架

    由於是是Google發布的,就前景來看,還是值得肯定的。

    Kotlin

    Kotlin 是Google推薦的官方開發語言,與Java互通,可相互轉換,簡潔安全等,是一種在 Java 虛擬機上運行的靜態類型編程語言,被稱之為 Android 世界的Swift,由JetBrains 設計開發並開源,

    Kotlin 可以編譯成Java位元組碼,也可以編譯成 JavaScript,方便在沒有 JVM 的設備上運行。

    最後

    如果你的水平接近達到高級水平,有信心快速達到高級水平,那就按照高級水平的技能點和市場招聘的高級要求對照靠近,一步步達到這個水平。如果你的水平還是初級入門水平,或者興趣度不是很高,想早點轉換,你可以快速轉變,因為在正確方向上努力太重要了,這裡也建議不要跨度太大,這裡我推薦往大前墩或者產品方向轉變,當然前提是你有這方面的興趣。

    當然上面講的都是技術方向上的發展,當然對一些技術棧水平和技術積累到一定程度後你也可以往技術管理和產品方向發展,當然你也可以選擇創業,如果你有足夠好的idea和心理準備。

    當然大部分人停留在中高級水平,然後一直停滯不前,加上外部各種環境,產生了各種焦慮,所以很矛盾,這時候你最好的狀態是快速往高級水平發展,當然這裡是比較難的,這個坎也是比較難邁過去的。因為Android知識體系比較龐大和複雜的,涉及到計算機知識領域的方方面面。下次可以專門講講怎麼快速進階為Android高級工程師。

    更多詳情可以參考我的【Github


    Android不僅僅侷限於應用和遊戲的開發,接下來的Android發展趨勢,它將應用到AI人工智慧、智能家居,AR虛擬現實技術,安全等熱門領域。在未來的十年裏,Android將更加人性化、智能化,以及安全和直觀的體驗。


    推薦閱讀:
    相關文章