網易架構師深入講解Android開發!這是一份面向Android開發者的複習指南,附贈課程+題庫

clhcowboy發表於2020-12-26

目前情況:10屆某民辦大學本科生,實際接觸Android年限6年多了,工作年限五年半(注意,我說的是工作年限,不是工作經驗),今年1月份裸辭後歇了大半年,經常一週也收不到幾個offer,好不容易熬到HR面,也因為薪資要求過高被放棄了,最終拿到一個並不是特滿意的offer。

首先我想明確地說在目前的大環境下,移動網際網路確實已經屬於寒冬。尤其是Android/IOS開發,雖然說不上夕陽行業,但也離熱門IT職業差了十萬八千里。從之前大量小創公司因疫情原因倒閉破產,360、滴滴、攜程等大廠實施裁員的新聞其實也能略見一二了。至於那些還存活著的小公司,對於移動端開發人員的要求。。。好像跑題了~還是說求職面試吧。

網上Android崗位招聘的需求來看:

Android崗位需求
要求掌握系統架構及相關技術,熟悉高階UI、framework原始碼,精通外掛化、效能優化、Java開發經驗。。。
視訊面試給我的第一感覺就是題太難了,薪資低也就就算了,面試要求還賊高。

專案實戰

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

理論

在Android應用優化方面,我們主要從以下6個方面進行優化:

  • 啟動速度與執行效率優化
  • 佈局檢測與優化
  • 記憶體優化
  • 耗電優化
  • 網路傳輸與資料儲存優化
  • APK大小優化

一、啟動速度與執行效率優化

  • 冷啟動和熱啟動解析
    本節主要介紹啟動方式、特點、應用啟動的流程、測量應用啟動的時間、什麼才是應用的啟動時間、降低應用啟動時的耗時、優化應用啟動時的體驗。

  • APP啟動黑白屏解決辦法
    解決方法1,把啟動白屏的背景換成一張圖片;解決方法2,把啟動白屏背景變透明。

  • APP卡頓問題分析及解決方案
    16ms原則;
    卡頓處理;
    Triple Buffer,既然丟幀的情況不可避免,Android 團隊從未放棄對這塊的優化處理,於是便出現了Triple Buffer(三緩衝機制)。

  • 啟動速度與執行效率優化之StrictMode
    StrictMode 詳解、Systrace和TraceView。

二、佈局檢測與優化

  • 佈局層級優化
    程式的每個元件和 Layout 都需要經過初始化、佈局和繪製,如果佈局巢狀層次過深,就會導致載入操作更為耗時,更嚴重的話還可能導致記憶體溢位。本節學習使用兩個工具來檢查和優化 Layout。

  • 過度渲染
    既然能夠通過系統設定知道過度渲染次數,測試時候就讀取該值,填寫報告就完了啊,為何要自動化呢?因為在對app進行系統的測試時,會發現頁面非常多,如管家一二級頁面就多大20多個,且整合包,灰度包,正式包,迴歸包都要進行一次測試,所以進行自動化過度渲染計數讀取是有必要的。

三、記憶體優化

由於Android應用的沙箱機制,每個應用所分配的記憶體大小是有限度的,記憶體太低就會觸發LMK(Low Memory Killer)機制,進而會出現閃退現象。如果要對記憶體進行優化,就需要先搞懂java的記憶體是如何分配和回收的,關於這方面,可以重點參考下面的內容:

主要包含

  • 記憶體抖動和記憶體洩漏
  • 記憶體大戶,Bitmap記憶體優化
  • Profile記憶體監測工具
  • Mat大物件與洩漏檢測

四、耗電優化

如果一個app使用的很少,但是app的耗電量卻很高,這時候使用者肯定想直接解除安裝這個app。那麼如何降低自己app的耗電量就是一個很重要的事情了。

耗電的因素有那些呢?

(1)Alarm Manager wakeup 喚醒過多
(2)頻繁使用區域性喚醒鎖
(3)後臺網路使用量過高
(4)後臺 WiFi scans 過多

詳細內容包含

  • Doze&Standby
  • Battery Historian
  • JobScheduler、WorkManager

五、網路傳輸與資料儲存優化

  • google序列化工具protobuf
  • 7z極限壓縮

六、APK大小優化

讓我們的apk檔案儘可能更小,移除那些未使用的程式碼和資原始檔,節省下載和提高效率。

  • APK瘦身
  • 微信資源混淆原理

最後說一下我的學習路線

其實很簡單就下面這張圖,含概了Android所有需要學的知識點,一共8大板塊:

  1. 架構師築基必備技能
  2. Android框架體系架構(高階UI+FrameWork原始碼)
  3. 360°Androidapp全方位效能調優
  4. 設計思想解讀開源框架
  5. NDK模組開發
  6. 移動架構師專題專案實戰環節
  7. 移動架構師不可不學習微信小程式
  8. 混合開發的flutter

Android學習的資料

我呢,把上面八大板塊的分支都系統的做了一份學習系統的資料和視訊,大概就下面這些,我就不全部寫出來了,不然太長了影響大家的閱讀。需要的小夥伴可以私信我【進階】我免費分享給大家,或者直接點選下面連結領取,謝謝大家這麼久以來的支援。

Android學習PDF+架構視訊+面試文件+原始碼筆記

如果你有其他需要的話,也可以在GitHub上檢視,下面的資料也會陸續上傳到Github

330頁PDF Android學習核心筆記(內含上面8大板塊)

Android學習的系統對應視訊

總結

我希望通過我自己的學習方法來幫助大家去提升技術:

  • 1、多看書、看原始碼和做專案,平時多種總結

  • 2、不能停留在一些基本api的使用上,應該往更深層次的方向去研究,比如activity、view的內部執行機制,比如Android記憶體優化,比如aidl,比如JNI等,並不僅僅停留在會用,而要通過閱讀原始碼,理解其實現原理

  • 3、同時對架構是有一定要求的,架構是抽象的,但是設計模式是具體的,所以一定要加強下設計模式的學習

  • 4、android的方向也很多,高階UI,移動架構師,資料結構與演算法和音視訊FFMpeg解碼,如果你對其中一項比較感興趣,就大膽的進階吧!

    進階學習資料領取方式:GitHub

/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**

希望大家多多點贊,轉發,評論加關注,你們的支援就是我繼續下去的動力!加油!

相關文章