前言
剛來的也別害怕,其實這也是內卷的一種形式,把你嚇跑了,行業內的人就能多點時間休息,不然內卷就會加劇,自己的日子也就越來越難混;還有些不思進取所謂的Android前輩,被自己同事屌,被老板屌,能留在公司都是老板施舍,轉頭就怪起行業來,實在是可笑,
不過話說回來,Android開發之所以會被勸退,還有以下幾個原因:
- 移動紅利期已過,現在需要真才實學,門檻高了不少,不再是當年培訓班出來都可以月入一萬多的年代了;
- 業界技術導向,國外巨頭由Mobile First轉為AI First,國內培訓班第一時間跟進,國內各大公司及時跟進,Android崗位HC不斷縮減,現在都喜歡3-5年有經驗有潛力能力強的人,對初級選手不夠友好;
- 販賣焦慮,關于『Android失業』的震驚體自媒體文多次在朋友圈出現,『落魄的Android開發』等自黑表情包廣泛傳閱,導致很多人以為Android真的不行了,2018年GMTC也從移動端大會轉型為大前端大會,技術人關注Android的越來越少;
- 技術趨于成熟,各大公司都有自己的移動端體系,對外分享的部分相對較少,很多東西沒有說出來,新技術較少,19年大家在移動端關注較多的應該就是Flutter了,導致大家對Android開發的熱情下降,在下降的同時,也會勸退一些想要入行的人,
Android 作為后輩,可以說從2012年以來一路摸爬滾打,也沿著前端開發的路總結出了自己的 MVC 到 MVVM 道路,
剛開始的時候,由于工程結構簡單,許多公司處于業務起步,開發模式大多沿用 findViewById 的形式,簡單粗暴,但是效率很高,不易出錯,MVC 分層思想也很實用,
隨著業務的不斷擴展,頁面也不斷增加,那么每個頁面都進行 id 的查找操作,就產生很多冗余代碼,這時候通過注解方式,在編譯時候動態生成代碼的框架層出不窮,以 Butter Knife 為代表,這大大減少了查找 id帶來的麻煩,同時編譯時運行的機制對運行效率也不會有影響,但是開發模式大多仍是 MVC 或 MVP,
看著開發業內百發齊放的框架層出不窮,Google 老大看不下去了,推出了官方推薦的開發框架JetPack , 這個框架包含很多基礎類別庫,并且到目前仍在不斷迭代,其中 ViewBinding 和DataBinding 的開發方式,不管是配合框架還是自己單獨使用,都是非常方便的,
ViewBinding,有點類似自動查找 id,省去了手動 findViewById 或者手動進行注解的麻煩,通過 gradle 插件,在編譯時自動將 view 和 xml 布局檔案進行了關聯,生成了xxx_binding 的類,這種方式效率很高,不易出錯,值得推薦,可以隨便網上搜一下使用方法即可,
DataBinding 就有點類似 React 或者其他的資料驅動方式了,通過固有的 xml dsl 撰寫,把資料傳進 xml,實作 view 和資料關聯,并隨資料變化而自動變化,和 MVVM 的框架思路一致,這種方式比較現代,也是編譯時通過 gradle 插件生成代碼實作,對效率基本無影響,但是我在使用中發現它有一個問題,有時候工程需要手動 clean ,以確保是使用了最新生成的代碼或是解決莫名的找不到代碼的錯誤,同時當你的 view 莫名其妙的變化與預期不符的時候,你需要仔細排查觸發事件的源頭,比較難通過代碼除錯出來,
所以當前Android正確的開發姿勢是什么?
如果你的工程簡單,只是 hybrid 的形式,用 findViewById 配合 MVC 沒什么不好,簡單粗暴,卻清晰易懂,
如果頁面不斷增多,懶得寫這些,用 Butter Knife ,甚至連注解也懶得寫,用 ViewBinding,
如果業務邏輯復雜,還要考慮分層,從 MVC 向 MVP 轉變,
當然,如果你開發熟練了,不會被一些錯誤搞得不知所措,那你可以用 DataBinding,
可以根據業務情況參考使用 JetPack 的部分模塊去優化工程,減少出錯,比較常用的比如 ViewModel,Livedata,LifeCycle 這種,


不管做任何技術行業,都必須要面對技術革新來做出一系列應對方式,比如刻苦學習新技術,轉行,直接努努力當個管理,我這里說的并不是真正意義上的內卷,內卷是什么,簡單提一嘴:
以前高中都是4點半放學,省排名前60的同學有機會上清華,
現在高中晚上10點半放學,節假日壓縮,還是省排名前60的同學能上清華,
成本提高,但是原本就屬于自己的收益卻沒有提高,這便是讓職業人聞風喪膽的“內卷”
與其無意義的內卷,想要逃離這個圈子,就必須把自己武裝起來,形成自己的技術壁壘,你放心,多的是人每天加班就是劃水,你只需要付出一點點努力就能超越一大部分人了,
技術方向的選擇
以下的Android技術方向以及其包含的知識點,都整理了一份筆記,有需要的可以找我拿:
獲取地址:【Android技術交流】
架構師筑基必備技能
目前Android APP開發主流語言就是Java語言,Java語言最大的特性就是提高了軟體的互動可能性,可以說安卓手機幾乎所有應用程式都是利用Java語言來進行撰寫的,
JAVA知識要點:
1、 Java序列化、泛型與反射
2、虛擬機底層原理
3、Android記憶體原理
4、 Java高級并發原理詳解
5、 編譯時技術掌握與實戰
6、JDK高級動態代理
7、高級資料結構與演算法
8、 Java IO操作
9、
,,,,

Android R FrameWork原始碼與UI
在Android中,Framework泛指系統架構層,Framework的中文意思是“框架”,在軟體開發中通常指開發框架,在一個系統中處于內核層之上,為頂層應用提供介面,被設計用來幫助開發者快速開發頂層應用,而不必關心系統內核運行機制,通常Framework都會隱藏main函式等應用程式必須的組件,開發人員只需把精力放在功能代碼的實作上,說簡單點,Framework具體的作業也就是為android應用開發的開發人員提供了一系列的服務和API的介面,
UI其實并不是單純指用戶看到的效果,因為在Android開發中,每個控制元件背后都有一套深層次的體系在支撐,自然而然,會UI不單純指的是會自定義控制元件,我們還應該知道自定義控制元件背后的執行流程,包括從Activity的創建,XML的決議,到每個控制元件的測量、布局、繪制,當然在中間還夾雜著比如影片、事件分發機制、嵌套滑動機制等知識點,還有谷歌提供的一些UI框架也使我們要掌握的物件,比如Jetpack組件庫、Material Design等,
知識要點:
1、 FrameWork原始碼決議(SDK 30)
2、Android常用組件深入決議
3、JetPack全家桶
4、Android R新特性決議
,,,,,

大廠內部APP調優方案
性能優化是一個專案必須要經歷的程序,你的應用好與壞都是在用戶使用的程序中反映出來的,如果性能優化沒有做好,對于你的應用來說影響是非常大的,尤其是現在的Android市場競爭非常激烈,如果你的應用體驗沒有競品的好,那么用戶流失是必然的,
性能優化不是一件簡單的事情,每個應用的性能好與壞無法由一個人來決定,因為性能優化的維度有太多了,從我們專案的整體架構,到我們代碼的每一個細節,再到應用使用環境的測驗,只有步步為營,才能做好一個專案的優化,大部分開發者把性能優化指向與不閃退就行,但是實際上性能優化包含了很多方面,比如從簡單的啟動優化、 UI優化、 卡頓優化、 崩潰優化、 安全性優化,到深層次的弱網優化、 大圖加載優化、 儲存優化、 高效傳輸優化、 極限瘦身優化,再到實際開發程序中的OOM問題原理決議、 ANR問題決議、 Crash監控方案,要想把這些優化流程做好,我們不僅從專案架構、代碼規范等方面入手,還用學會利用第三方的檢測工具來檢測專案性能,最主要是,我們需要一套完整的性能優化方案,這正是我們所缺少的,所以我們必須要把缺少的補上, 打造一套真正的完整的性能優化體系,把性能優化流程化,常態化,
1、 APP基礎優化
2、APP深度優化
3、開發焦點問題優化
4、編程效率優化
5、專案實戰
抖音在APK包大小資源優化的實踐
優酷回應式布局技術全決議
網路優化
手機淘寶雙十一性能優化專案揭秘
高德APP全鏈路原始碼依賴分析
徹底干掉OOM的實戰經驗分享
微信Android終端記憶體優化實踐

對標騰訊T3.3架構師
Android框架體系架構(高級UI+FrameWork原始碼) 這塊知識是現今使用者最多的,我們稱之Android2013~2016年的技術,
Android開發者也往往因為網上Copy代碼習慣了而導致對這塊經常“使用”的代碼熟悉而又陌生:熟悉的是幾乎天天在和它們打交道, 天天在復制這些代碼 ;陌生的是雖然天天和這些代碼打交道,但是并沒有深入研究過這些代碼的原理,代碼深處的內涵,
本篇知識要點:
1、架構師設計思想篇
2、 手淘全套架構設計與實作
3、 開源框架
4、OKHttp網路框架
5、一線大廠核心框架剖析與實作

NDK模塊開發(音視頻系列)
NDK(Native Development Kit縮寫)一種基于原生程式介面的軟體開發工具包,可以讓您在 Android 應用中利用 C 和 C++ 代碼的工具,通過此工具開發的程式直接在本地運行,而不是虛擬機,
在Android中,NDK是一系列工具的集合,主要用于擴展Android SDK,NDK提供了一系列的工具可以幫助開發者快速的開發C或C++的動態庫,并能自動將so和Java應用一起打包成apk,
本篇知識要點:
1、NDK開發之C/C++入門
2、JNI模塊開發
3、Linux編程
4、底層圖片處理
5、音視頻開發
6、機器學習

Flutter學習進階
2021 年無疑是 Flutter 技術如火如荼發展的一年,
每一個移動開發者都在為 Flutter 帶來的“快速開發、富有表現力和靈活的 UI、原生性能”的特色和理念而癡狂,從超級 App 到獨立應用,從純 Flutter 到混合堆疊,開發者們在不同的場景下樂此不疲的探索和應用著 Flutter 技術,也在面臨著各種各樣不同的挑戰,
本篇知識要點:
1、Flutter跨平臺開發概述
2、Windows中Flutter開發環境搭建
3、撰寫你的第一個Flutter APP
4、Flutter Dart語言系統入門
…

微信小程式開發
微信小程式作為現在比較火的編程開發應用場景之一,深受市場的青睞,這讓不少開發者眼饞不已,但是對于初學者來說,就完全摸不著頭腦了,不知道微信小程式開發制作需要學習那些知識,有需要的朋友可以參考本篇,
本篇知識要點:
1、小程式概述及入門
2、小程式UI開發
3、API操作
4、購物商場專案實戰

獲取地址:Android技術交流
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/344291.html
標籤:其他
上一篇:flutter的安裝與設定
