加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

repo xml 格式

发布时间:2020-12-16 05:20:31 所属栏目:百科 来源:网络整理
导读:Android是智能手机市场上炙手可热的开源操作系统,由Google推出后现在已经升级到了4.0版,受到了三星,HTC,摩托罗拉等大手机厂商的支持,最近一两年的增长速度超过了iPhone。 和苹果不一样,Android是开源系统,因此我们每个人都可以下载它的源码,修改,编

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 日。属于 互联网分类。

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    相关内容
    推荐文章
    站长推荐
    热点阅读