Android内核开发:理解和掌握repo工具

转载 2017年01月03日 10:02:56
Android内核开发:理解和掌握repo工具
2015-05-20 19:52:13
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://ticktick.blog.51cto.com/823160/1653304

由于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脚本下载方法:


1
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo >  ./repo


由于官网被墙,目前可以使用的repo脚本下载方法如下(两者选一):


1
2
3
4
$ 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文件:


1
2
3
4
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源码,则方法如下:


1
$ repo init -u https://android.googlesource.com/platform/manifest


当然,上面的官网被墙了,因此,推荐如下镜像(两者选一):


1
2
$ 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选项:


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


本文出自 “Jhuster的专栏” 博客,请务必保留此出处http://ticktick.blog.51cto.com/823160/1653304

ubuntu下编译开源代码Super4PCS

Super4PCS是用于点云配准的一种快速,有效的方法,属于随机采样算法的一个变种。它基于4pcs算法配准速度非常慢的缺点进行改进,利用智能索引实现4pcs算法计算复杂度的显著降低。理论部分详细见论文...

Ubuntu Linux 查看、编辑、比较二进制文件

查看二进制有以下几种方法: 方法一:hexdump apt-get install libdata-hexdumper-perl 安装好之后就可以直接hexdump your...

Android内核开发:理解和掌握repo工具

1. repo是什么?   repo是一种代码版本管理工具,它是由一系列的Python脚本组成,封装了一系列的Git命令,用来统一管理多个Git仓库。   2. 为什么要用repo?   ...

Android内核开发:理解和掌握repo工具

由于Android源码是用repo工具来管理的,因此,搞Android内核开发,首先要搞清楚repo是什么东西,它该怎么使用?作为《Android内核开发》系列文章的第二篇,我们首先谈谈对repo工具...

git和repo 的知识(在下载android源码和linux内核源码时)

原文地址:http://bbs.chinaunix.net/thread-1947726-1-1.html 因为Android是由kernel、Dalvik、Bionic、prebuilt、bu...

android git库管理工具repo

1 创建多个git库。我是在公司内部git网站上创建的。     git@192.168.*.*:**/**/MyManifest.git (重要:配置下载内容)     git@192.168....

Android源代码仓库及其管理工具Repo分析

http://blog.csdn.net/luoshengyang/article/details/18195205   软件工程由于需要不断迭代开发,因此要对源代码进行版本管理。A...

Android源码仓库和Repo工具使用

这里介绍一下ROM Porting经常听到的名词和Repo工具的使用。 AOSP、AOKP、CM 相信很多Android发烧友对这几个单词都是耳熟能详了,这里还是给新入门的朋友们普及一下这几个单词背后...
  • wei_lei
  • wei_lei
  • 2016年04月27日 17:21
  • 1287

Android源码仓库和Repo工具使用

前言 好久没有双休一个周末了,唉,闲话不多说了,不管任何时候都要多学习充实自己。ROM Porting的工作是很繁琐的,涉及的知识点很多,这里介绍一下ROM Porting经常听到的名词和Repo工...

Android源代码仓库及其管理工具Repo分析

软件工程由于需要不断迭代开发,因此要对源代码进行版本管理。Android源代码工程(AOSP)也不例外,它采用Git来进行版本管理。AOSP作为一个大型开放源代码工程,由许许多多子项目组成,因此不能简...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android内核开发:理解和掌握repo工具
举报原因:
原因补充:

(最多只允许输入30个字)