Android 原生開發如何前行?
曾聽過很多人說 Android 學習很簡單,做個App就上手了,工作機會多,畢業後也比較容易找工作。這種觀點可能是很多Android開發者最開始入行的原因之一。
在工作初期,工作主要是按照業務需求實現App頁面的功能,按照設計師的設計稿實現頁面的效果。
在實現的過程中,總是會被提如下的需求:
這個字能不能大點或者醒目點兒?
感覺顏色和設計稿有差別,能不能再調調?
怎麼老是崩潰啊,行不行啊?
......

所以,工作過一年後你會發現,自己的工作重點就是 將找各種各樣的元件、框架,拖拖拽拽,改改樣式。 在極端情況下出現了問題後(比如部分機型上崩潰,載入圖片慢),也不知道該如何解決!都不好意思說自己是搞技術的。
造成這種局面的有兩種原因:
所開發的App功能要求並不複雜,在效能上呢,也不需要極致的追求;
自己的意識不夠,不知道如何從平凡的工作中提煉可優化的點,在向上提升方面也沒有 完整的規劃 。
從自身規劃的角度講,技術上的進階分如下幾個階段:
做好業務需求的功能 。這個是初級程式設計師就應該有的能力。
解決極端情況下的技術問題,比如效能優化,OOM等。 稍有點規模的公司,肯定都會遇到這種問題,比如上文中說的App在部分機型上崩潰、頁面載入不出來等。只是大部分程式設計師會覺得難以復現,或者是因為小概率事件而忽略了。 在忽略這些問題的過程中,也放棄了進一步提升的可能性。 還有一部分程式設計師是看到了這些問題,但一直不知道怎麼解決,因為這些問題的產生基本都是要往底層框架去找原因,而平時只關注上層的業務邏輯程式碼,因而沒有深入研究底層的原理,導致心有餘而力不足。
在開發框架和效率上做文章 。 舉個例子,很多程式設計師說自己的精力都在和產品的撕逼中浪費了,但有沒有想過,能夠通過技術手段將自己從繁雜的無技術含量的工作中解救出來?比如是否能夠做到只編寫一次程式碼,或者改個配置引數就能夠做到在不同平臺上執行。更高的要求是,能否將這些方案做成通用框架或產品。
上面列舉的幾個階段,首先要從思考方式上去逼迫自己不斷地逼迫自己,不要偷懶。其次,要想按照上述階段發展,還需要落在實處,在具體的技術體系中不斷的學習。
舉個例子:
對於OOM,需要知道有哪些優化工具可以使用(Lint、MAT等),如何檢測OOM,以及垃圾回收機制等深層次的原理。對於 效能優化 來說,如何減少apk體積、資源動態載入等都是必會的。以下是效能優化相關思維導圖。

Java語言進階與Android相關技術核心
Android應用是由Java語言進行開發的,SDK也是由Java語言編寫,所以我們要學習java語言。另外,雖說kotlin語言得到了Android官方的熱推,但是kotlin也是編譯成了java語言再執行的。對於Android來說,只要SDK沒有用kotlin重寫,那麼Java語言是都需要學習的。而且Android apk的後臺伺服器程式大概率是java語言構建,所以學習java也是一種必然。

Android前沿技術
現在去很多公司面試,除了你具備基本的能夠寫一個高效能app的能力後,一般都會在自己的app裡面加一些現有的相對較 666 的技術,這些技術我們稱之為前沿技術。他們一般包含熱升級,熱修復,App Instant,強制更新,元件化路由架構Arouter,RxJava,IOC架構方法,Hook技術等等,當然,這些技術你不能只會用,你需要知道他的原理,有時候,你還需要知道如何對這些架構進行改進。

NDK 模組開發
音視訊/高清大圖片/人工智慧/直播/抖音等等這年與使用者最緊密,與我們生活最相關的技術一直都在尋找最終的技術落地平臺,以前是windows系統,而現在則是移動系統了,移動系統中又是以Android佔比絕大部分為前提,所以Android NDK技術已經是我們必備技能了。

移動架構師
架構師不是天生的,在Android裡面最常用的架構無外乎 MVC,MVP,MVVM,但是這些思想如果和模組化,層次化,元件化混和在一起,那就不是一件那麼簡單的事了,我們需要一個真正身經百戰的架構師才能講解透徹其中蘊含的深理。

需要這些資料的大夥關注+點贊+加群:185873940 免費獲取!
群內還有許多免費的關於高階安卓學習資料,包括高階UI、效能優化、架構師課程、 NDK、混合式開發:ReactNative+Weex等多個Android技術知識的架構視訊資料,還有職業生涯規劃及面試指導。