关于git-repo时manifest.xml的一些整理

 在Android源码的下载和应用程序编程中,manifest.xml文件是非常重要的,是repo仓库的大管家,在里面定义着repo中可用的git项目。这里主要讲的是Android源码中的manifest.xml文件,应用程序中的manifest文件不是很了解,没有发言权。

       今天就因为一个manifest.xml文件的问题,自己纠结了一天,总是不太明白为啥没有下载合适的工程,各种google,最后自己阅读了下.repo/manifest.xml文件,才发现可能是由于网页编辑人员的失误,将项目组的名称写错了,而自己又不太会看manifest.xml文件,所以怎么也找不出来问题。

       下面以一个实际的例子来说明manifest.xml文件的结构(arndale-octa.xml),由于源文件非常大,只选取部分来进行说明:

<manifest>
<remote name="aosp" fetch="git://android.git.linaro.org/" review="review.android.git.linaro.org"/>
…
<default revision="refs/tags/android-4.4.2_r2" remote="aosp" sync-j="4"/>
<!--  Developer extras  -->
<project path="packages/apps/AndroidTerm" name="platform/external/AndroidTerm" revision="linaro-master" groups="devel"/>
</manifest>

另外,google公司给出的文档manifest-format.txt中定义了XML文件的格式:


在<manifest>和</manifest>标记之间的是由repo脚本解释执行的一些命令。


Remote 定义了远程git的名称,fetch给定了该git项目的存放地址(URL)。Review定义了当使用命令’repo upload’上传更新后,审核代码的gerrit服务器的主机名。

Name:A short name uniqueto this manifest file。用来作为每个项目的.git/config的远程名称。


Project定义了一个新的项目

Path:定义了git仓库应该把远程源码存放到本地的位置

Name:git项目的名称

Revision:定义了在仓库中使用哪个分支或者tag,如果没有说明,则repo sync会使用由<default ../>标记的版本。

Groups:项目组的名称,有一些项目可能在被用在多个具体的实例中,所以将它们分组,通常有common,devel等组。

 

<default revision="refs/tags/android-4.4.2_r2" remote="aosp" sync-j="4"/>

在大多数情况下,可能规定一个默认的元素。它的Remote和revision属性被用于当项目没有指定自己的remote和revision属性时。

Revision属性:git分支的名称。(例如master或者refs/heads/master)。

 

当我们从google网站上下载到最新的repo脚本文件后,运行repo init来初始化一个仓库,需要添加一些额外的参数例如,-u 指定从哪个仓库下载,-b指定分支,-m指定manifest文件名称,-g指定项目组。

 

      整理完后,对于manifest.xml不再感觉那么神秘难懂了,对于可能出现的错误,也可以去检查manfiest.xml文件(一般是对.repo/manifests/default.xml的链接),找出命令中可能出现的错误,再接着repo sync即可从仓库中拉下正确的源码。很方便啊!!

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值