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文件合并,拉取所有仓库。

用Repo管理自己的本地仓库的更多相关文章

  1. git - 版本控制器(本地仓库)

    本地创建仓库,然后进行管理.提交到本地仓库(不需要网络),提交到远程仓库(需要网络) 相对于svn为克隆方式,赋值的是整个仓库,svn只是复制的代码.   1.电脑新创建一个”本地仓库”空文件夹 2. ...

  2. maven手动将jar包导入到本地仓库(支持多个仓库选择)

    正常我们在用maven搭建项目时,我们只需要将项目所需要的依赖配置到maven的配置文件pom.xml中即可,maven就可以去网上将jar包下载到配置的本地仓库中去.所以一般情况下我们是不需要手动安 ...

  3. github仓库主页介绍、用git管理本地仓库和github仓库、搭建网站

    github仓库主页介绍 名词解释: 工作区: 添加.编辑.修改文件等动作 暂存区: 暂存已经修改的文件,最后统一提交到git中 git(仓库): 最终确定的文件保存到仓库,成为一个新的版本,并且对他 ...

  4. Day 17 软件管理2之搭建本地仓库

    1.列出yum源可用的软件仓库 [root@www.xuliangwei.com ~]# yum repolist [root@www.xuliangwei.com ~]# yum repolist ...

  5. Git初始化本地仓库及管理远程仓库github

    1.首先在本地安装git,地址:https://git-scm.com/downloads.下载安装好git工具. 2.将自己在github上的注册的用户名和邮箱写入本地git的配置文件中: (1). ...

  6. git代码管理——克隆项目到本地仓库及上传本地项目到仓库

    一.克隆项目到本地仓库 1.github网站操作 1.1 登录github 首先创建一个仓库,点击“New” 1.2 输入仓库信息 1.3 创建完成后,会多出一个仓库 2.安装git客户端 2.1 安 ...

  7. Maven 手动添加 JAR 包到本地仓库

    Maven 确确实实是个好东西,用来管理项目显得很方便,但是如果是通过 Maven 来远程下载 JAR 包的话,我宿舍的带宽是4兆的,4个人共用,有时候用 Maven 来远程下载 JAR 包会显得很慢 ...

  8. maven建立本地仓库

    maven 建立本地仓库 博客分类: java,maven,nexus   前面我讲到为什么要使用 Maven, Maven 的安装,以及 如何与 IDE 集成等,前面的介绍可以认为是一个 Hello ...

  9. Git本地仓库

    原文:http://www.cnblogs.com/wilber2013/p/4189920.html Git基本概念 在Git中,我们将需要进行版本控制的文件目录叫做一个仓库(repository) ...

随机推荐

  1. HTML5 & CSS3 内容收集(1)

    1. HTML发展历史介绍 2. 浏览器支持 2.1 新增标签支持 在html5 中新增了很多的标签,其中包括8个新增语义结构标签.header, section, footer, aside, na ...

  2. 讲清楚之 javascript 参数传值

    讲清楚之 javascript 参数传值 参数传值是指函数调用时,给函数传递配置或运行参数的行为,包括通过call.apply 进行传值. 在实际开发中,我们总结javascript参数传值分为基本数 ...

  3. Python窗口学习之给按钮美化

    tkinter的按钮很丑也很难改 怎么办呢? 最好的方法就是不用按钮! 给Label添加点击事件,和按钮的作用是一样的! 代码: #!/usr/bin/env python # -*- coding: ...

  4. PAT B1086 就不告诉你

    题目描述: 做作业的时候,邻座的小盆友问你:"五乘以七等于多少?"你应该不失礼貌地围笑着告诉他:"五十三."本题就要求你,对任何一对给定的正整数,倒着输出它们的 ...

  5. 【每日日报】第三十八天---java与时间相关

    1 今天看了网上的课程 学习了java的关于时间的代码 获取时间 import java.util.Date; public class DateDemo { public static void m ...

  6. Java当中的HashSet

    package collection; import java.util.HashSet; import java.util.Iterator; import java.util.Set; /* * ...

  7. spring-基于xml的aop开发-快速入门

    1.导入aop的相关坐标 <dependency> <groupId>org.springframework</groupId> <artifactId> ...

  8. axios 内存泄漏

    有一个项目需要post后台几万条数据,每次只能请求三五条,所以只能在每次请求成功后自调用这个请求函数. 但这样请求了成千上万次后,浏览器会崩溃并报出 out of Memory 错误,经查询,这是内存 ...

  9. Vue生产环境调试的方法

    vue 生产环境默认是无法启用vue devtools的,如果生产应用出了问题,就很难解决.. 原理 先说下vue如何判断devtools是否可用的. vue devtools扩展组件会在window ...

  10. 别像弱智一样提问 Stop-Ask-Questions-The-Stupid-Ways

    https://github.com/xcr1234/Stop-Ask-Questions-The-Stupid-Ways 你真的准备好了吗? 感谢群友 for you 提供 避免 xy-proble ...