Android 年薪百萬的進階攻略 —— 資深(專家)工程師學習路線

思惟導圖

Android 資深(專家) 思惟導圖

系統啓動過程

這一部分是 Android 系統從按下電源鍵開始,而後到展現開機界面,再到展現桌面以前的一個過程。瞭解下面相關進程的工做流程,會對 Android 系統有一個總體的概念,是一個從 0 到 1 的過程,對深刻研究 Android 系統內部機制有很大幫助。git

  • init 進程github

    瞭解 init 進程建立與啓動的流程。算法

  • Zygote 進程設計模式

    瞭解 Zygote 進程建立的流程,以及 fork 的過程。網絡

  • system_server 進程架構

    瞭解 system_server 進程啓動流程,工做流程。ide

  • ServiceManager組件化

    瞭解 ServiceManager 的啓動流程,以及 ServiceManager 在系統中的做用。學習

內核技術

這一部分是計算機操做系統相關的原理,也是計算機相關專業的一門必修課程,推薦學習下相關知識。職業規劃

  • CPU 調度
  • 進程管理
  • 文件系統
  • 內存管理

通訊方式

  • Binder

    Binder 是 Android 系統中特有的一種 IPC 通訊方式,建議閱讀 Binder 相關的源碼,與深刻越好,理解 Binder 工做的原理,瞭解服務的註冊、獲取、死亡通知的流程。

  • Handler

    Handler 是 Android 系統中線程間通訊的方式,已經在 Android 高級工程師部分說過了。這裏必定要閱讀下源碼瞭解內部的運行機制。

  • Socket

    Socket 是系統中常見的一種 IPC 通訊方式,Socket 的應用範圍很廣,在進程間通訊、網絡通訊都會用到,建議深刻了解下。

  • Pipe

    Pipe(管道)是 Linux 系統中常見的一種 IPC 通訊方式,建議深刻了解下工做原理。

  • signal

    signal(信號量)是系統中常見的一種 IPC 通訊方式,建議深刻了解下工做原理。

核心服務

  • Activity、Service、Broadcast、ContentProvider

    瞭解四大組件啓動流程,理解生命週期回調過程,瞭解工做原理。

  • ActivityManagerService(AMS)

    理解 ActivityManagerService 工做流程,以及與 Activity 工做的流程。

  • WindowManagerService(WMS)

    理解 WindowManagerService 工做流程,以及與 ActivityManagerService 和 Activity 工做的過程。

  • View、Window、Surface

    理解 Activity、Window、View 之間的關係,瞭解 View 渲染機制。

  • Surface、SurfaceFlinger

    理解 View 與 Surface 之間的關係,瞭解 SurfaceFlinger 工做流程,理解 View 渲染的過程。

  • PackageManagerService(PKMS)

    理解 PackageManagerService 工做流程,瞭解 Apk 安裝與卸載過程。

  • PowerManagerService(PMS)

    理解 PackageManagerService 工做流程,瞭解屏幕喚醒、滅屏的過程,並理解 WeakLock 機制。

  • InputManagerService(IMS)

    理解 InputManagerService 工做流程,理解事件的建立流程、事件分發機制,ANR 觸發原理。

  • AudioFlinger

    理解 AudioFlinger 工做流程。

  • AssertManager

    理解 Apk 安裝包中資源管理的過程。

異常處理

能夠從源碼的角度分析異常產生的緣由,定位異常,以及處理。

  • Watchdog
  • ANR
  • Java Crash
  • Native Crash
  • 卡頓

Java 虛擬機

  • 內存模型

    瞭解 JVM 內存模型,包括堆、棧、方法區、運行時常量池等。

  • 類加載機制

    瞭解類加載時機,類加載的過程,理解類加載器雙親委派模型。

  • 垃圾回收機制

    瞭解垃圾回收的緣由,理解對象生命週期,瞭解垃圾回收算法。

動態化

  • Android Gradle Plugin

    經過閱讀 Android Gradle Plugin 源碼,理解 Gradle 構建項目的過程,瞭解插件開發過程。

  • VirtualAPK、Tinker

經過閱讀 VirtualAPK 源碼,理解熱修復、插件化的原理。

  • Hook 技術

設計模式與架構

  • 熟悉六大 OOD 設計原則
  • 熟悉常見的設計模式,能夠熟練的運用在項目中
  • 理解 MVC、MVP、MVVM 的思想以及區別
  • 項目架構設計與重構
  • 項目組件化設計與開發

軟技能

  • 拓展技術廣度,其餘領域的技術學習
  • 團隊管理和指導新人

總結

以上就是 Android 資深(專家)工程師 的基本知識點,若是在高級工程師部分基礎很牢,進階到資深(專家)是很容易的。這個級別的知識點不只僅須要對 API 熟練應用,更重要的是對內部的運行機制的深刻理解。

咱們能夠發現不少的知識點都是對 Android 系統源碼的閱讀來獲取的,閱讀源碼是一個很痛苦的過程,也是必須經歷的一個過程。

在閱讀源碼的時候建議多注重對總體流程的把握,而不是深刻細節不能自拔。畢竟咱們主要工做仍是開發 App,閱讀源碼是爲了更好的理解內部運行機制。

專家除了具備紮實的技術深度之外,還有必定的技術廣度,以及不錯的架構設計能力。除了技術,軟技能也是很重要的部分。好比如何管理團隊,帶帶新人,寫寫 PPT,吹 NB 啥的。

已經達到了資深(專家)的開發者,之後的學習路線跟本身的職業規劃有很大關係。這個級別技術也再也不那麼重要,畢竟都是專家了,你們都很 NB,怎麼還能讓人手把手教呢?!

如下方面你們能夠參考下:

  • 維護一個公衆號,增長業內影響力
  • 考慮出一本書,增長業內知名度
  • 開源一個 NB 的項目,爲開源貢獻一份力量
  • 轉型作產品或者管理
  • 換一個領域繼續深刻研究

通常達到資深(專家)的開發者須要 3 - 5 年左右,本科畢業的學生年齡通常在 22 週歲左右,那麼達到資深(專家)最快也得 25 週歲了。這裏咱們會遇到一個職業上的危機 —— 30 歲危機。

隨着年齡的愈來愈大是繼續作技術?仍是轉型作管理呢?Android 也沒啥可研究的了,仍是換其餘領域呢?這是一個值得思考的問題,我尚未這個經歷(歲數還沒到)不敢妄下定論,哈哈。

這裏分享下網上的一份關於各大廠 Android 級別的薪資參考圖(若有侵權,請聯繫我刪除)。

大廠薪資參考,若有侵權立刪!

我看到網上不少消息都說今年互聯網寒冬什麼什麼的,其實每一年都會說寒冬。互聯網總共也就發展了十幾年,從 2000 年初的諾基亞到如今的智能手機時代,也就十幾年的時間。誰有會預料的下一個十年以後會是什麼樣的呢?

因爲前幾年大量培訓出來的開發者(這裏只是說下客觀事實,沒有貶低的意思),整個市場涌入大量的初級、中級開發者,因此對於新人來講的確很差找工做了,由於競爭的人多了。

本身沒能力就說沒能力,怎麼你到哪兒,哪都大環境很差,你是破壞大環境的人啊?—— 趙本山

做爲開發者咱們最好的準備就是知識的儲備,若是咱們努力學習達到了高級甚至更高,目前需求量仍是很大的。目前我瞭解到的 Android 領域專家級別的工程師也沒有多少,你們能夠留意統計一下。

關於 Android 進階的學習指南就已經完結了,歡迎你們繼續關注,其餘方面的技術分享,及我的感悟。

個人 GitHub

github.com/jeanboydev/…

個人公衆號

歡迎你「掃一掃」下面的二維碼,關注個人公衆號,能夠接受最新的文章推送,有豐厚的抽獎活動和福利等着你哦!😍

Android波斯灣

若是你有什麼疑問或者問題,能夠 點擊這裏 提交 issue,也能夠發郵件給我 jeanboy@foxmail.com

同時歡迎你

Android技術進階:386463747
來一塊兒交流學習,羣裏有不少大牛和學習資料,相信必定能幫助到你!
相關文章
相關標籤/搜索