Android内核开发:理解和掌握repo工具-创新互联

由于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交流,也欢迎关注我的新浪微博 @卢_俊 获取最新的文章和资讯。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:Android内核开发:理解和掌握repo工具-创新互联
本文地址:http://myzitong.com/article/dcgdoj.html