先來看看Framework框架層都有哪些東西, Framework框架層是應用開發程序中,呼叫的系統方法的內部實作,比如我們使用的TextView、Button控制元件,都是在這里實作的,再舉幾個例子,我們呼叫ActivityManager的getRunningAppProcesses方法查看當前運行的行程串列,還有我們使用NotificationManager的notify發送一個系統通知,
如何快速地學習、梳理Framework知識體系呢?常見的學習方法有下面幾種:
- 閱讀書籍(方便梳理知識體系,但對于解決問題只能提供方向),
- 直接閱讀原始碼(效率低,挑戰難度大),
- 打Log和打堆疊 (效率有所提升,但需要反復編譯,添加Log和堆疊代碼),
- 直接聯調,實時便捷(需要除錯版本),
首先可以通過購買相關的書籍進行學習, 其中主要的知識體系有Linux作業系統,比如行程、執行緒、行程間通信、虛擬記憶體,建立起自己的軟體架構,
在此基礎上學習Android的啟動程序、服務行程SystemServer的創建、各個服務執行緒(AMS/PMS等)的創建程序,以及Launcher的啟動程序,熟悉了這些之后,你還要了解ART虛擬機的主要作業原理,以及init和Zygote的主要作業原理,
之后隨著在作業和實踐程序中你會發現,Framework主要是圍繞應用啟動、顯示、廣播訊息、按鍵傳遞、添加服務等開展,這些代碼的實作主要使用的是Java和C++這兩種語言,
通過書籍或者網路資料學習一段時間后, 你會發現很多問題都沒有現成的解決方案,而此時就需要我們深入原始碼中進行挖掘和學習, 但是除了閱讀官方檔案外,別忘了除錯Framework也是一把利刃,可以讓你游刃有余快速定位和分析原始碼,
關于原始碼這一塊,一文半解也描述不清楚,之前有收集到這份《Android Framework 原始碼決議》,希望幫助大家在技術的道路上更進一步,已經全部整理收錄好了,需要完整版的朋友,點這里來【我的交流qun】可以查看到全部內容!
目錄

章節部分內容展示:
那位BATJ 的大佬是這個方面的專家,他整理出來的這份資料一共有452頁,都是他根據自己的作業實戰經驗,把Android Framework 內核決議精編出來的勞動成果,那份資料火爆全網,但是現在開放下載了!
文章內容比較長,一篇文章寫不完,為了不影響大家的閱讀體驗,下面只以截圖的方式進行部分內容的展示,
大家可以看一下有沒有自己需要或者感興趣的點,方便對自己的知識體系進行查漏補缺,
第一節 Binder 系列—開篇
- 一、概述
- 二、 Binder
- 三、 提綱
- 四. 原始碼目錄

第二節 Binder Driver 初探
- 一、Binder 驅動概述
- 二、 Binder 核心方法
- 三、附錄

第三節 Binder Driver 再探
- 一、Binder 通信簡述
- 二、Binder 通信協議
- 三. 場景總結
- 四、Binder 記憶體機制

第四節 Binder 啟動 ServiceManager
- 一. 概述
- 二. 啟動程序
- 三. 核心作業
- 四. 總結

第五節獲取 ServiceManager
- 一. 概述
- 二. 獲取 ProcessState 物件
- 三. 獲取 BpBinder 物件
- 四. 獲取 BpServiceManager
- 五. 總結

Android Framework 精編內核決議預覽圖
- 第六節注冊服務(addService)
- 第七節獲取服務(getService)
- 第八節 framework 層分析
- 第九節如何使用 Binder
- 第十節如何使用 AIDL
- 第十一節 Binder 總結
- 第十二節 Binder 面試題全決議


總結
同樣是做Andorid,有的人作業5年工資沒變化,有的人作業2年就已經年薪50W,這個現象或許前幾年還不明顯, 但隨著近幾年后端技術瘋了一般的快速發展,曾經那個只要會個UI啥的就能走遍天下的時代早已不在了,人才水平的分化也越來越明顯,
競爭永遠都是非常殘酷的,畢竟成為一個架構師不是那么容易的,一個架構師的成長來自于機會,努力及天分 !
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/297174.html
標籤:其他
