您好,登錄后才能下訂單哦!
由于Android源碼是用repo工具來管理的,因此,搞Android內核開發,首先要搞清楚repo是什么東西,它該怎么使用?作為《Android內核開發》系列文章的第二篇,我們首先談談對repo工具的理解和使用。
1. repo是什么?
repo是一種代碼版本管理工具,它是由一系列的Python腳本組成,封裝了一系列的Git命令,用來統一管理多個Git倉庫。
2. 為什么要用repo?
因為Android源碼引用了很多開源項目,每一個子項目都是一個Git倉庫,每個Git倉庫都有很多分支版本,為了方便統一管理各個子項目的Git倉庫,需要一個上層工具批量進行處理,因此repo誕生。
repo也會建立一個Git倉庫,用來記錄當前Android版本下各個子項目的Git倉庫分別處于哪一個分支,這個倉庫通常叫做:manifest倉庫。
3. 怎么安裝repo?
官方的repo腳本下載方法:
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ./repo
由于官網被墻,目前可以使用的repo腳本下載方法如下(兩者選一):
$ git clone git://git.omapzoom.org/git-repo.git $ git clone git://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/ $ cp git-repo/repo ./repo
或者修改手頭已有的被墻的repo文件:
REPO_URL = 'git://git.omapzoom.org/git-repo.git' REPO_URL = 'git://aosp.tuna.tsinghua.edu.cn/android/git-repo' REPO_REV = 'stable'
當然,你也可以去我的GitHub下載這個repo文件,地址:
https://github.com/Jhuster/AOSP/blob/master/repo
4. 怎么下載源碼?
上面說過,Android源碼分支其實由一個叫manifest倉庫來管理起來的,因此,下載源碼首先要clone這個manifest倉庫。這個倉庫里面有一個XML文件,其實就是一個文件清單,列出了本代碼倉庫依賴哪些代碼,該去哪下載,分支是什么。
一般用repo init命令來clone這個manifest倉庫,例如,如果要下載Android源碼,則方法如下:
$ repo init -u https://android.googlesource.com/platform/manifest
當然,上面的官網被墻了,因此,推薦如下鏡像(兩者選一):
$ repo init -u git://git.omapzoom.org/platform/manifest.git $ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest
初始化完畢后,你會在本地的.repo文件夾中看到manifest倉庫的內容,這個文件夾中最重要的文件是manifest.xml(有的倉庫用的是default.xml,然后指向具體的xml),它就是上面說到的文件清單。
如果要選擇特定版本的Android源碼,或者在已下載的源碼基礎上切換到其他版本,則可以使用-b選項:
$ repo init -u git://git.omapzoom.org/platform/manifest.git -b android-5.0.2_r1 $ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-5.0.2_r1
然后使用 repo sync 命令進行同步即可下載好全部的Android源碼了。
5. manifest.xml文件清單的組成
上面提到了repo init需要初始化一個manifest倉庫,倉庫中含有一個很重要的manifest.xml文件清單,其實這個manifest.xml并不復雜的,它就是用XML文件的格式記錄了本項目依賴的各個Git倉庫的名稱、地址,以及分支等信息。常用的元素如下所示:
(1) manifest 最頂層的XML元素
(2) remote 設置遠程git服務器的屬性,如名稱、根URL地址等
(3) project 需要clone的Git倉庫,path表示本機路徑,name表示遠程版本庫的相對路徑
(4) copyfile 執行拷貝操作,把URL/$src地址的文件拷貝到./$dest
其實,如果不使用repo工具,也是可以對照manifest.xml文件清單直接使用“git clone”的方式一個project一個project的下載的,然后對每個project進行git checkout特定的分支。
7. 常用repo命令
這一塊網上文章很多,我就不詳細講解了,只列出常用命令。
(1) repo init // 初始化repo倉庫
(2) repo sync // 下載源碼
(3) repo start // 創建分支
(4) repo checkout //切換分支
(5) repo branches //查看分支
(6) repo status //查看文件狀態
8. 小結
關于repo工具就介紹到這里了,有任何疑問歡迎留言或者來信lujun.hust@gmail.com交流,也歡迎關注我的新浪微博 @盧_俊 獲取最新的文章和資訊。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。