Android怎麼才算高級,這幾點我建議你一定要掌握!
- 2019 年 10 月 5 日
- 筆記
Android開發已經涼了嗎?
這兩年有很多人問過我類似的問題,在大方向講,任何一個行業都有有一個成長周期,Android經歷了2011-13年的野蠻生長後,已經進入了成熟期,這個階段絕大部分企業對Android崗位的需求回歸「理性」,不是懂一點Android基礎就能找到工作的年代,這時候再從0起步可能比較晚,但Android市場卻普遍缺乏高級人才。
目前Android市場上初中級的工資6K到18K不等,高級大概在20K-35K,很多朋友初中級開發者卡在20K這個門檻始終邁不過去,想要學習又不知道該怎麼著手,大多從做上層應用開始,到做 Framework 層就淺嘗輒止。
這裡我找來一則高級Android開發的招聘要求:

這是小米在拉勾上的招聘要求,相當於p6級別,除開學歷的要求外,我們可以看到它在Android基礎要求之外,把JNI/NDK/Framework,甚至JS、Server端開發也作為了提升點,是全棧方向的雛形。我覺得大家可以經常在招聘網站里看看現在的企業需要什麼技術,當然也不能把企業要求的都學了。我這裡大致總結了一下,Android開發人員的發展方向:
第一,橫向提升。
基於全棧發展的趨勢,在自己擅長領域深入專研的同時橫向擴展,不要關起門來閉門造車。而這裡說的橫向提升就是向全前端轉型,在除了要在APP會hybrid開發(web、native、前端交互、硬體交互)之外,還要會web開發,微信小程式,H5。
比如服務端開發,我們做Android開發很多時候,要依賴於服務端介面返回數據,可以自己試著搭建一下,至少要對服務端的結構理論、服務與服務之間通訊、聚合是什麼樣的流程也是需要有所耳聞。
第二,縱向重塑。
一直以來,做Android開發有這麼兩個說法,如果是做應用開發,往應用架構方向發展比較合適,如果是做系統層開發,往往底層驅動比較合適。這裡我是比較贊同的,那具體應該學習什麼呢?
1.移動架構:架構展示層: MVC、MVP、MVVM、Clean、Flux、Android Architecture Components;架構層:模組化->組件化->插件化->沙盒/雙開技術,比如可以雙開微信,類似Docker, 每個頁面都是插件,類似Vue.js中每個頁面都是組件。
2.基礎進階:這個方向可能比較多,比如VIEW、Android動畫機制、四大組件工作原理、多媒體技術等等。我們平常在工作中碰到的View滑動衝突問題、其實通過掌握View工作機制和Android觸摸事件體系就能輕易解決掉。還有對於需要開發絢麗的動畫效果,那麼對於視圖動畫和屬性動畫一些特性必須有一定的了解。Android 中的四大組件工作機制其實底層應用的是Binder機制,我們不妨從 AIDL 這個介面來了解 Binder。

JNI 和 NDK 開發也是比較常見,特別對於一些做 SDK 項目為主的,這一塊開發流程也是需要掌握,NDK開發(含JNI)也是用人單位區分應聘者的手段之一,企業不一定要用到,但是可以通過是否掌握NDK來篩選人才。

3.語言學習開發語言:這裡我要糾正一下學習語言不是跨行業,比如Kotlin可以說是Android世界的頭等公民了。再有時下比較火的Python和GO,另外做底層C/C++是必不可少的。
4.源碼:要求能看懂並且熟悉源碼(自己選幾個第三方庫的也可以),要做到熟悉源碼及其實現原理。並且要做到能自己二次封裝(或自己貢獻三方庫)三方庫。這樣一來,你就會在維護中慢慢成為這個技術塊的專家了。我覺得輸出倒逼輸入是一個不錯的學習方式。
5.如何提高開發效率?
工欲善其事必先利其器,如何提高開發效率,很多開發者在開發中由於gradle不會用導致載入程式碼非常耗時,這些都是你的工作成本的浪費。還有就是git的使用也可以幫助我們管理好我們的程式碼,這個非常關鍵,因為這個工具可以讓我們修改的程式碼不會因為錯誤操作而導致丟失。另外,對移動開發者我們至少需要知道如何抓取網路包。其中,最常用的stetho就是一個非常好用的可以抓取網路包的工具
6.混合開發
混合開發的flutter現在已經逐漸成了主流的混合開發框架,另外由於阿里系的強大存在,導致阿里系的公司都在用Weex混合架構,這些都是一個Android工程師開拓視野,走向未來必不可少的基本技能的。
Flutter學習思維導圖:

其實學習的方向還有很多,這裡就不給大家一一羅列了,因為不同行業不同項目需要學習進階的技能都不一樣,可以說360度發展。
這裡放上一份詳細的Android高階開發學習的進階大綱給大家參考下學習方向:

四、寫在最後
不論遇到什麼困難,都不應該成為我們放棄的理由!