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


curlhttp://commondatastorage.googleapis.com/git-repo-downloads/repo>./repo


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


$gitclonegit://git.omapzoom.org/git-repo.git$gitclonegit://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/$cpgit-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源码,则方法如下:


$repoinit-uhttps://android.googlesource.com/platform/manifest


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


$repoinit-ugit://git.omapzoom.org/platform/manifest.git$repoinit-ugit://aosp.tuna.tsinghua.edu.cn/android/platform/manifest


初始化完毕后,你会在本地的.repo文件夹中看到manifest仓库的内容,这个文件夹中最重要的文件是manifest.xml(有的仓库用的是default.xml,然后指向具体的xml),它就是上面说到的文件清单。


如果要选择特定版本的Android源码,或者在已下载的源码基础上切换到其他版本,则可以使用-b选项:


$repoinit-ugit://git.omapzoom.org/platform/manifest.git-bandroid-5.0.2_r1$repoinit-ugit://aosp.tuna.tsinghua.edu.cn/android/platform/manifest-bandroid-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工具就介绍到这里了,有任何疑问欢迎留言或者来信[email protected]交流,也欢迎关注我的新浪微博 @卢_俊 获取最新的文章和资讯。


更多相关文章

  1. 【Android】结合源码解析Android消息队列工作流程
  2. [Android] 将Android工程做成jar包和资源文件
  3. Android wps文件下载、预览
  4. Android FrameWork学习(二)Android系统源码调试
  5. Android源代码分析(三) MediaScanner源码分析(下)
  6. Android作业:一个3D相册源码
  7. Android(java)学习笔记135:Android中assets文件夹资源的访问
  8. android Manifest.xml全局配置文件中根标签中package属性及标签
  9. android源码

随机推荐

  1. 详解Android中的屏幕方向
  2. Android(安卓)实现全屏和无标题栏的显示
  3. Android(安卓)NDK 环境搭建(Native Devel
  4. RelativeLayout常用属性介绍
  5. Android预定义样式
  6. android(2)——Structure of an Android(
  7. android 图片压缩的方法
  8. 善用Android预定义样式
  9. 用android:clipChildren来实现红心变大特
  10. Android2.2 API 中文文档系列(2) —— Edit