91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android內核開發:理解和掌握repo工具

發布時間:2020-07-03 20:31:42 來源:網絡 閱讀:15449 作者:Jhuster 欄目:移動開發

由于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交流,也歡迎關注我的新浪微博 @盧_俊 獲取最新的文章和資訊。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江山市| 调兵山市| 潍坊市| 永昌县| 德保县| 莎车县| 伊宁市| 乌兰浩特市| 屏东县| 昌宁县| 雷山县| 新邵县| 浦江县| 涿州市| 屏东市| 郸城县| 宁海县| 赫章县| 天祝| 苗栗市| 得荣县| 瓦房店市| 马鞍山市| 吴堡县| 抚松县| 南城县| 西昌市| 绥江县| 隆林| 方正县| 望奎县| 德惠市| 保亭| 万宁市| 定陶县| 菏泽市| 达拉特旗| 堆龙德庆县| 天柱县| 和龙市| 中宁县|