緣起
2020年,許多企業在接受業績嚴重受損的同時,還要承受巨大的人力成本壓力。正當所有企業主們焦慮和恐慌的時候,因疫情下多企業探索的靈活用工卻有“逆勢增長”的趨向。
首先是選擇靈活用工的企業越來越多了,特別是軟件開發、創意設計、文案策劃、新媒體運營等需求量。
##【移動開發靈活用工適應的場合】
共享新經濟模式下:音視頻直播、微信小程序、跨平臺開發、App外包、等。
這裏我歸類瞭如下幾類:
1、應用層開發,不限於各種產品,主要還是Android原生開發,主要是各種性能優化。
2、嵌入式開發,不限於各種開發板子,物聯網,智能家居,車聯網/車載
3、安全開發,不限於各種反逆向,反彙編,尋找安全漏洞
4、音視頻開發,不限於直播、點播、音視頻通話、音視頻會議,短視頻等
5、插件化、組件化、熱修復開發,不限於自研和使用開源框架集成開發
6、系統開發(Android),不限於Rom維護和FrameWork層定製需求
7、圖形圖像開發,不限於OpenGL ES,EGL,GLSurfaceView,濾鏡,美顏
8、小程序 / 快應用
應用層開發
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 中已收錄,裏面包含不同方向的自學編程路線、面試題集合/面經、及系列技術文章等,資源持續更新中…