Android原始碼閱讀姿勢

語言: CN / TW / HK

最近在看《Android進階解密》一書,需要參閱系統原始碼,所以在win平臺折騰了一下AOSP原始碼閱讀環境,下面將過程記錄下,以供參考。

下載原始碼

以AOSP-8.0原始碼為例

下載連結 提取碼: kaae

壓縮檔案大小8.6G,解壓後26G,需要注意下磁碟空間

下載完先不著急解壓,繼續往下看

開啟目錄大小寫支援

眾所周知,windows分割槽是不區分檔案大小寫的,但是aosp中有些目錄和檔名稱完全一致,只是大小寫不同,所以直接解壓會導致原始碼不完整(會覆蓋),從而影響閱讀,但好在Windows10-17107開始,支援按目錄區分大小寫,但是需要手動開啟。

以管理員身份執行 PowerShell 並使用以下命令

開啟

bash fsutil.exe file setCaseSensitiveInfo <path> enable

關閉

bash fsutil.exe file setCaseSensitiveInfo <path> disable

還是不著急解壓,繼續往下看。。。

配置windows defender

windows defender是自win10開始自帶的一個保護系統安全的綜合工具,預設是啟用的,並且會開啟全盤實時保護,如果不加以配置,那對於AOSP龐大的原始碼檔案,系統將實時進行掃描,這會很影響效能,我們需要手動新增排除目錄,讓其忽略AOSP目錄。

步驟如下

windows defender->病毒與威脅防護->"病毒與威脅防護"設定->新增或刪除排除項

終於可以解壓原始碼了!!

Source Insight匯入原始碼

閱讀工具推薦使用Source Insight,輕量且功能豐富,對於aosp中的多種開發語言支援完善。

首先新建一個專案

選擇上面解壓的原始碼路徑

微信截圖_20230305121146.png

image.png

新增要閱讀的部分

建議目前要研究哪塊就先新增哪塊,全部新增會影響效能,也沒有必要。

以frameworks為例,選中該目錄後,點選Add Tree,就會將該目錄以及子目錄中的檔案都新增專案中

image.png

新增完之後,點選Close,就會進入專案主頁面

Source Insight配置優化

下面說一下我個人喜歡的一些配置

image.png

個人習慣將介面配置成上面的佈局樣式,可以參考下

  • 佈局1是當前檔案內的變數和方法列表,可以快速檢索需要檢視的程式碼
  • 佈局2是閱讀視窗,在視窗左側右鍵單擊可以開啟行號顯示,右側的小地圖開啟方式是,頂部選單欄View->Overview
  • 佈局3是專案檔案列表,可以在頂部輸入檔名進行檢索
  • 佈局4是上下文視窗,開啟方法(View->Panels->Context Window) 當你在佈局2中點選某個方法或者變數時,該視窗會出現該方法或者變數定義的地方
  • 佈局5是引用視窗,開啟方法(View->Panels->Relation Window) 會實時顯示你選中的函式或者方法被引用的位置