AOSP使用Repo工具管理项目源码。而Repo工具则依赖一个名叫manifest的git仓库来记录Android源码中都包含哪些子仓库。

进入Android源码根目录下的.repo目录,可以看到manifest仓库的相关信息:

查看manifest.xml文件,可以看到:

它引用了default.xml文件,再看一下manifests/default.xml文件:

可以看到default.xml文件定义了整个Android源码所用到的所有子项目,Repo就根据这个文件来同步代码。

那么问题来了,如何在Android源码中添加其它子仓库呢?或者如何添加我们自己的仓库?从而实现每次repo sync时自动也帮我们同步一下自己的仓库。比如Android源码中内核是编译好后放进来的(没有相关内核源码),我想每次编译完自己的内核后将其放入一个git仓库,然后执行repo sync将这个自己的内核拉到Android源码目录下,这个需求如何实现?

首先创建一个git仓库来放编译后的Android内核,这里是android_kernel目录:

.repo下新建local_manifests目录,在下面创建自己的仓库定义文件,我这里叫kernel.xml

文件内容如下:

  • remote表示定义一个远程仓库,name随便,表示仓库名称,fetch表示地址,我这里是一个本地的git仓库;
  • project表示定义一个工程,path表示将在Android源码根目录下产生一个叫kernel的目录;name对应原仓库下这个工程的名称,这里就是目录名称;remote是对上面remote的引用,名称和上面所说remote的name一致;

然后进入Android源码根目录cd /usr/source/android,执行repo sync android_kernel,当前目录下就会多一个kernel目录。

原理就是Repo会将local_manifests目录下的xml文件和默认的xml文件合并,拉取所有仓库。

最新文章

  1. 阿里云推送SDK在某些机型(某米为主)下崩溃问题的解决方法
  2. Akka-actor使用入门
  3. [deviceone开发]-多种样式下拉菜单demo
  4. python date
  5. oracle第一招之神马都是浮云
  6. CSS Hack大全-可区分出IE6-IE10、FireFox、Chrome、Opera
  7. jquery 中的 this 和 $(this)
  8. 当函数没有return时错误
  9. 与useradd命令相关的两个默认配置文件
  10. mysql 创建临时节点
  11. mysql 千分位 Format
  12. Byte Array to Hexadecimal String
  13. gen_create_syn.sql
  14. Android为TV端助力之解决setOnItemSelectedListener一进来就自动执行一次的问题
  15. 第三篇 功能实现(3) (Android学习笔记)
  16. Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC 配置校验器
  17. 《DSP using MATLAB》Problem 6.17
  18. 常用 Git 命令清单【转】
  19. 基础002_V7-CLB
  20. Vue 引入第三方js.css的方式

热门文章

  1. pandas数据读取
  2. 如何更愉快地使用rem —— 别说你懂CSS相对单位
  3. canvas动画—圆形扩散、运动轨迹
  4. nextSibling和lastSibling
  5. 7步学会在Windows下上架iOS APP流程
  6. 在小程序Canvas中使用measureText
  7. 布局框架frameset
  8. 防止自己的页面不被其他网站的页面的iframe引用
  9. git的下载安装以及基本操作
  10. 解决“WARNINGThe remote SSH server rejected X11 forwarding request.“警告