做了5年Android開發,混喫等死的日子纔是我人生最辛苦的日子!

緣起

最近在論壇看到這樣一個帖子:

座標深圳。
4 月上旬公司解散。(現在想想好像是假解散,真裁員)
這一個半月以來,從朋友內推,到拉勾、Boss 直聘,再到獵聘、智聯招聘。
從開始的精準投遞,到後來的海投,加起來投遞了上百家公司吧。
面了差不多 10 家公司,拿到 2 個 offer,還都主動拒了。
一個是 10 人的創業公司,啥資源都沒有。談薪資還要跟投資人申請。。
另一個是傳統行業轉互聯網,薪資給到位了,但是企業文化受不了。早上八點半上班、還要做廣播體操、體檢需要做乙肝兩對半檢查、試用期沒有五險一金。糾結了 2 天,還是主動拒了。
我自覺個人能力還算不錯,二本專業畢業,工作 5 年,運營崗能拿到 18k 。
今年Android開發找工作真的有點難。







現狀分析

等風口過了,該掉下來的豬都會掉下來。以前老闆給你高工資只是因爲人才缺口,這由供需關係決定。

但當做Android的人越來越多了,那個時候你的核心競爭力是什麼?

或者有一天Android徹底涼了呢?作爲一個工作不到一年的新人,現在還不是談收穫的階段,你需要的是通過技術、視野、人脈的積累,爲你今後的發展鋪平道路。

樓主顯然陷入了技術瓶頸,以至於現在出去找一份各方面都比較滿意的工作都成問題,我的Leader現在差不多每天都接電話讓他出去當Partner。你現在的選擇不夠多,當然是因爲你的能力還不夠強,作爲個人事業的規劃至少要做3~5年。不至於讓你找份合適的工作都爲難。

這段時間我都在幫部門招人,在拉鉤、boss直聘上也掛了JD,一個多月的時間收到的簡歷估計有幾百份,我發起了面試的不超過5個,最後硬着頭皮遞上去1個還被刷了,相比之下還是在知乎上找我的朋友整體水準要高一些。

可問題就在這裏,現在我瞭解到的大公司都在招Android開發,很多部門還非常着急,但就是招不到合適的人。別跟我說現在做Android的人很多,質量是關鍵,數量一點意義都沒有。每年池子裏的人就那麼多,一份好的簡歷出來不止公司之間,部門之間甚至是部門內都在搶,但這批人之外,絕大部分人的簡歷能佔用你的時間不會超過5秒。

之前我就提到過這個問題,在現在這個階段,公司之間的技術鴻溝已經非常明顯,開發者身在其中,也因爲自身學習能力,環境,項目等等的差別,技術上的差距越拉越大,造成了工作幾年之後的兩級分化,並且這種差距的拉開不是靠自己的努力就能彌補的。在前段時間面試了一個在某一線手機廠商做App的同學,985出身,工作3年,目前也是公司的核心骨幹,跟我說了他做的很多UI上的優化和重構工作。他們的App團隊大概是4,5個人,看的出來他已經在力所能及的範圍內努力做到最好,可惜,受限於團隊規模,支持力度和技術儲備,他的天花板來的太快,做的不夠深入,技術能力也不夠全面。

那面對這種情況,作爲開發者,我們能做的是什麼?最基本的,脫離舒適區,不停磨練自己的技術。舉我自己的例子,剛進公司的時候我主要做的是UI,平時搞一些頁面上的優化,解決一些小BUG和ANR,做的還算不錯;因爲之前做的不錯,也因爲方向變化,大半年之後我開始切換到做視頻下載,後來又開始做視頻播放,一年半多時間裏跟我的導師把空間播放器和下載器推倒了重做,到現在各項指標都很不錯。剛開始切換的時候很痛苦,音視頻領域入門有一定門檻,項目壓力非常大,之前又完全沒有接觸過。那段時間不知道多少次15樓南區半夜和假日只剩我跟我導師兩個人在公司加班,可現在想想也確實是成長最快的時候。這塊做的差不多了,今年又開始做編解碼,繼續在音視頻這塊深挖下去。所以就是這樣,技術不行就深挖技術,覺得環境束縛了你就儘快跳槽,保持自己足夠的競爭力。或許一次跳槽還沒有辦法改變什麼,但這是一個量變產生質變的過程,一份不斷向上的簡歷也能爲你敲開很多公司的大門。

我在一線互聯網企業工作近十年,指導過不少同行後輩。幫助很多人得到了學習和成長。

我意識到有很多經驗和知識值得分享給大家,也可以通過我們的能力和經驗解答大家在IT學習中的很多困惑,所以在工作繁忙的情況下還是堅持各種整理和分享。但苦於知識傳播途徑有限,很多程序員朋友無法獲得正確的資料得到學習提升,故此將並將重要的Android性能優化、音視頻開發、NDK技術、組件化插件化熱修復、常見源碼分析等學習路線分享出來。

希望我能夠用我的力量幫助更多迷茫、困惑的朋友們,幫助大家在Android開發道路上學習和發展~

應用層開發

Android原生開發,需要重點關注的依然主要是各種性能優化,啓動速度,耗電量,流暢度,網絡優化再到大廠項目實戰,這些都是作爲一名優秀Android開發具備的基本素養。

  • 啓動速度
  • 流暢度
  • 抖音在APK包大小資源優化的實踐
  • 優酷響應式佈局技術全解析
  • 網絡優化
  • 手機淘寶雙十一性能優化項目揭祕
  • 高德APP全鏈路源碼依賴分析
  • 徹底幹掉OOM的實戰經驗分享
  • 微信Android終端內存優化實踐

以上資源均免費分享給大家,內容均放在了開源項目:【Github】,大家可以自行獲取。

音視頻開發

幸運的是我們生活在一個好時代,科技在這幾十年得到了迅猛的發展。在疫情肆虐的當下,我們可以通過音視頻會議進行遠程辦公;我們還有在線教育系統,對於大多數學生來說,完全可以在家進行在線學習。

從某個角度看,這次疫情雖然導致很多行業處於崩潰邊緣,但也催生了新的行業發展,其中音視頻會議和在線教育就是因疫而起的行業。在疫情短時間內難以結束的情況下,音視頻會議和在線教育的重要性馬上體現了出來,新的溝通方式和教育方式被越來越多的人所認知,所接納。

甚至我們可以判定,在線教育行業和音視頻會議行業會在今年崛起,並在未來十年得到迅猛發展。

如何學習音視頻開發

一,初級入門篇:

一 繪製圖片

1. ImageView 繪製圖片

2. SurfaceView 繪製圖片

3. 自定義 View 繪製圖片

二、AudioRecord API詳解

三、使用 AudioRecord 實現錄音,並生成wav

  • 創建一個AudioRecord對象
  • 初始化一個buffer
  • 開始錄音
  • 創建一個數據流,一邊從AudioRecord中讀取聲音數據到初始化的buffer,一邊將buffer中數據導入數據流。
  • 關閉數據流
  • 停止錄音

四、用 AudioTrack 播放PCM音頻

1.AudioTrack 基本使用

  • MODE_STATIC模式
  • MODE_STREAM模式

2.AudioTrack 詳解

  • 音頻流的類型
  • Buffer分配和Frame的概念
  • AudioTrack構造過程

3. AudioTrack 與 MediaPlayer 的對比

  • 區別
  • 聯繫
  • SoundPool

五、使用 Camera API 採集視頻數據

1.預覽 Camera 數據

2.取到 NV21 的數據回調

六、使用 MediaExtractor 和 MediaMuxer API 解析和封裝 mp4 文件

1.MediaExtractor API介紹

2.MediaMuxer API介紹

3.使用情境

七. MediaCodec API 詳解

1.MediaCodec 介紹

2.MediaCodec API 說明

3.MediaCodec 流控

  • 流控基本概念
  • Android 硬編碼流控
  • Android 流控策略選擇

由於文章篇幅受限,剩餘內容過多,文中插圖有限,下文只能截圖目錄展示:

二,中級進階篇:
  • Android OpenGL ES 開發(一): OpenGL ES 介紹
  • Android OpenGL ES 開發(二): OpenGL ES 環境搭建
  • Android OpenGL ES 開發(三): OpenGL ES 定義形狀
  • Android OpenGL ES 開發(四): OpenGL ES 繪製形狀
  • Android OpenGL ES 開發(五): OpenGL ES 使用投影和相機視圖
  • Android OpenGL ES 開發(六): OpenGL ES 添加運動效果
  • Android OpenGL ES 開發(七): OpenGL ES 響應觸摸事件
  • Android OpenGL ES 開發(八): OpenGL ES 着色器語言GLSL
  • Android OpenGL ES 開發(九): OpenGL ES 紋理貼圖
  • Android OpenGL ES 開發(十): 通過GLES20與着色器交互
  • 使用 OpenGL 顯示一張圖片
  • GLSurfaceviw 繪製 Camera 預覽畫面及實現拍照
  • 使用OpenGL ES 完成視頻的錄製,並實現視頻水印效果

高級探究篇:
  • 深入學習音視頻編碼,如H.264,AAC,研究使用開源編解碼庫,如x.264,JM 等
  • 深入研究音視頻相關的網絡協議,如 rtmp,hls,以及封包格式,如:flv,mp4
  • 深入學習一些音視頻領域的開源項目,如 webrtc,ffmpeg,ijkplayer,librtmp 等等
  • 將 ffmpeg 庫移植到 Android 平臺,結合上面積累的經驗,編寫一款簡易的音視頻播放器
  • 將 x264 庫移植到 Android 平臺,結合上面積累的經驗,完成視頻數據 H264 軟編功能
  • 將 librtmp 庫移植到 Android 平臺,結合上面積累的經驗,完成 Android RTMP 推流功能

音視頻編解碼技術

  • 音視頻編解碼技術(一):MPEG-4/H.264 AVC 編解碼標準
  • 音視頻編解碼技術(二):AAC 音頻編碼技術

流媒體協議

  • 流媒體協議(一):HLS 協議
  • 流媒體協議(二):RTMP協議

多媒體文件格式

  • 多媒體文件格式(一):MP4 格式
  • 多媒體文件格式(二):FLV 格式
  • 多媒體文件格式(三):M3U8 格式
  • 多媒體文件格式(四):TS 格式
  • 多媒體文件格式(五):PCM / WAV 格式
    以上資源均免費分享給大家,內容均放在了開源項目:【Github】,大家可以自行獲取。

插件化、組件化、熱修復開發

組件化作爲Android客戶端技術的一個重要分支,近年來一直是業界積極探索和實踐的方向。每個大廠內部的各個Android開發團隊也在嘗試和實踐不同的組件化方案,並且在組件化通信框架上也有很多高質量的產出。

怎樣實現組件化

要實現組件化需要考慮的問題主要包括下面幾個:

  • 代碼解耦。將一個龐大的工程拆分解耦,這是非常耗時耗力的工作,但這也是最基礎最重要的一步
  • 數據傳遞。每個組件都有可能提供給其他組件使用,主項目與組件、組件與組件之間的數據傳遞
    UI跳轉。
  • 組件的生命週期。組件加載、卸載和降維的生命週期
  • 集成調試。在開發階段如何做到按需的編譯組件?一次調試中可能只有一兩個組件參與集成,這樣編譯的時間就會大大降低,提高開發效率。
  • 代碼隔離。如何杜絕耦合的產生。

下面給大家介紹的是全網最全的高級Android組件化強化實戰手冊,覆蓋了整個互聯網公司,受篇幅限制不會展示所有內容,只能截圖展示部分,完整內容已整理成PDF文檔。

現今插件技術的使用非常普遍,比如微信、QQ、淘寶、天貓、空間、攜程、大衆點評、手機管家等等這些大家在熟悉不過的應用都在使用。

插件技術可以給項目開發帶來巨大的好處,比如:並行高效開發、模塊解耦、解除單個dex函數不能超過65535的限制、動態更新升級、按需加載等等。

掌握好插件技術,需要如下的安卓基礎和相關知識,例如:

  • Android應用程序安裝,加載過程

  • Android應用運行機制,生命週期調用原理

  • Android應用資源編譯打包原理

  • Android應用讀取資源原理

  • Android系統AMS、PMS、NMS等系統服務的運作原理

  • 增量更新

  • HOOK等技術

下面將從基礎的插件化原理到Android插件化初探再到大廠架構演化實戰應用,總結出了較爲全面與完整的安卓插件技術與插件化對 Android開發的重要性。受篇幅限制不會展示所有內容,只能截圖展示部分,完整內容已整理成PDF文檔。

以上資源均免費分享給大家,內容均放在了開源項目:【Github】,大家可以自行獲取。

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

推薦學習的新技術,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知識體系比較龐大和複雜的,涉及到計算機知識領域的方方面面。

本文在開源項目:https://github.com/Android-Alvin/Android-LearningNotes 中已收錄,裏面包含不同方向的自學編程路線、面試題集合/面經、及系列技術文章等,資源持續更新中…

在CSDN看到好的文章,而又點讚的人,思想都比一般人豁達!

你的支持!我的動力!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章