repo xml 格式

Android是智能手机市场上炙手可热的开源操作系统,由Google推出后现在已经升级到了4.0版,受到了三星,HTC,摩托罗拉等大手机厂商的支持,最近一两年的增长速度超过了iPhone。

和苹果不一样,Android是开源系统,因此我们每个人都可以下载它的源码,修改,编译,生成自己的系统,然后刷到自己的手机上去。对于喜欢智能手机和DIY的程序员来说,这也是非常有趣的一件事。

Android源码的下载,编译的环境要求,编译步骤在上面的链接里都有,只要按步就班去做就没问题。不过DIYer们是不能满足于只用现成的,我们需要修改系统,而且最好有版本控制,就像Android源码的Repo工具一样。下面我们就来说说如何搭建自己的Repo版本控制服务器。

首先来说说Repo是干什么的。Android是一个非常庞大的项目,里面有很多相对独立的模块,例如Java虚拟机dalvik,例如libc实现bionic,例如浏览器引擎webkit,还有各个厂商的驱动与私有代码,等等。因此,Google将Android划分成多个子项目,每个子项目是一个独立的Git仓库,然后自己用python开发了一个Repo工具来对这几百个子项目(Git仓库)进行管理。

例如你可以通过下面的命令下载repo工具,然后初始化和下载Android的源代码(其中-j16表示使用16个链接同步下载,这段代码是从Android官网上摘录的,页面Downloading the Source Tree):

从Google下载的Repo的代码很有意思,我们忽略无关的注释,截取开头一段来看:

代码的开头是Shell脚本,但是到了第七行,就神奇滴通过这个命令exec python -E "$0" "$@"…变成python代码,覆盖自身执行了。它利用了Python代码的长字符串”"”标记,使得第7行只会在Shell下执行,在python里就是一个常量字符串,开始的几行代码在Python和shell下都是有效的表达式。

从Google下载的repo只是一个初始化代码,通过repo initrepo sync,它不仅能下载Android源码,也能下载自身的最新代码

如果我们要搭建自己的源码服务器,首先当然考虑的是Repo,不然我们自己重新构思一个多Git仓库管理的工具,也是非常麻烦的一件事。

下面我们就来看看如何利用Google的repo来管理我们自己的Android源码仓库。

首先我们需要理解repo所管理的Android代码的结构。这些结构都是在.repo/manifest.xml文件中给出的,我们给出一个例子:

1
2
cd $REPOROOT / myandroid
git clone -- bare https : //android.googlesource.com/platform/bootable/recovery android_bootable_recovery.git
  • 在$REPOROOT/manifest目录下创建项目配置文件

    由于除了recovery项目以外,其他项目仍然使用Android自己的源代码,因此可以这样写default.xml文件
    8
  • while read oldrev newrev refname
    do
    if [ $oldrev = "0000000000000000000000000000000000000000" ]
    then
    echo "You CANNOT push new remote branch"
    exit 1
    fi
    done

    本条目发布于 2012 年 3 月 23 日。属于 互联网分类

    相关文章

    php输出xml格式字符串
    J2ME Mobile 3D入门教程系列文章之一
    XML轻松学习手册
    XML入门的常见问题(一)
    XML入门的常见问题(三)
    XML轻松学习手册(2)XML概念