用Repo管理自己的本地仓库
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文件合并,拉取所有仓库。
本文来自博客园,作者:世间很大,转载请注明原文链接:https://www.cnblogs.com/oamha/p/16293678.html