Android源碼編譯 - repo工具的簡單介紹

我們知道AOSP項目由不同的子項目組成,為了方便進行管理,Google采用Git對AOSP項目進行多倉庫管理.在聊repo工具之前,我先帶你來聊聊多倉庫項目:

我們有個非常龐大的項目Pre,該項目由很多個子項目R1,R2,...Rn等組成,為了方便管理和協同開發,我們為每個子項目創立自己的倉庫,整個項目的結構如下:


圖片.png

將一個項目Pre進行分庫后會遇到這么一個問題:如果我們想要創建Pre分支來做feature開發,這就意味著,我們需要到每個子項目中分別創建對應的分支,這個過程如果純粹靠手工做,那簡直是個災難,利索當然我們會想寫個自動化處理程序(我們假設這個工具叫做RepoUtil)來幫助我們解決這個問題.這個RepoUtil也會有版本管理之類的需求,因此我們也用Git對其管理,并為其創建對應的倉庫.此時整個項目的結構如下:

圖片.png

這里RepoUtil知道整個項目Pre下的每個子項目(即維護子項目的列表),同時需要提供對這些子項目的管理功能,比如統一創建分支等.但是從"單一職責"角度來看,RepoUitl這個工具的功能過于復雜,我們完全可以將維護子項目列表這個功能抽取出來作為一個新項目sub_projects,因為子項目也會變化,因此,為其創建對應的倉庫,并用Git管理,這樣的化,RepoUtil只需要通過簡單的對sub_projects進行依賴即可,此時整個項目的結構如下:

圖片.png

AOSP項目結構和我上文的描述非常類似.repo工具對應RepoUtil,mainfest對應sub_projects.
總結一下:repo就是這么一種工具,由一系列python腳本組成,通過調用Git命令實現對AOSP項目的管理.

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容