repo是用于管理android的git仓库的工具。

之前想将android的代码放在github上面,并通过repo进行管理。但一直不知道怎么添加进去,那么多的git仓库,难道都要手动建立吗?

直到看到有人在github上面部署成功,分析一下他的manifest.xml才知道是怎么部署。

参考链接

http://blog.csdn.net/billpig/article/details/7604828

http://blog.csdn.net/shift_wwx/article/details/19557031

manifest.xml

分析的manifest.xml文件来源:

https://github.com/CyanogenMod/android

分析其中的default.xml,如下:

<?xml version="1.0" encoding="UTF-8"?>
<manifest> <remote name="github" // 远程服务器名称是“github”,后面用github表示fetch
fetch=".." // 获取数据的位置是"..",上一级目录
review="review.cyanogenmod.org" /> // gerrit审核的位置 <remote name="private" // 远程服务器名称“private”
fetch="ssh://git@github.com" /> // 从”ssh://git@github.com下载代码 <remote name="aosp" // aosp
fetch="https://android.googlesource.com" // 代码下载地址
review="android-review.googlesource.com"
revision="refs/tags/android-7.1.1_r6" /> // 默认的git分支 // 默认的下载地址,如果没有指定remote的话。
<default revision="refs/heads/cm-14.1" // 默认的代码下载地址
remote="github" // github,表示上面的remote设置的name="github"的一项,那么下载的地址fetch就是”..“
sync-c="true" // 只同步指定的分支
sync-j="4" /> // repo sync 默认的并行数目 <!-- AOSP Projects -->
// path:将代码下载到本地的build目录中
// name:${remote fetch}/${project name}.git
// remote 没有指定,那么久采用default地址,name=github,从”.."上一层目录下载。
// 结合name的值,就从../CyanogenMod/android_build.git这个仓库下载地址。查看作者github仓库,就能找到android_build这个仓库。
<project path="build" name="CyanogenMod/android_build" groups="pdk,tradefed">
<copyfile src="core/root.mk" dest="Makefile" />
</project> // 将代码下载到本地的build/blueprint目录,从remote="aosp“下载,也就是https://android.googlesource.com
// 在结合project的name,下载的仓库地址就是https://android.googlesource.com/platform/build/blueprint
<project path="build/blueprint" name="platform/build/blueprint" groups="pdk,tradefed" remote="aosp" /> // 从android_buld_kati.git仓库下载,放到本地的build/kati目录。
<project path="build/kati" name="CyanogenMod/android_build_kati" groups="pdk,tradefed" />
<project path="build/soong" name="platform/build/soong" groups="pdk,tradefed" remote="aosp" >
<linkfile src="root.bp" dest="Android.bp" />
<linkfile src="bootstrap.bash" dest="bootstrap.bash" />
</project>
<project path="abi/cpp" name="platform/abi/cpp" groups="pdk" remote="aosp" />
<project path="art" name="CyanogenMod/android_art" groups="pdk" />
<project path="bionic" name="CyanogenMod/android_bionic" groups="pdk" />
<project path="bootable/recovery" name="CyanogenMod/android_bootable_recovery" groups="pdk" />
<project path="cts" name="platform/cts" groups="cts,pdk-cw-fs,pdk-fs" remote="aosp" />
<project path="dalvik" name="CyanogenMod/android_dalvik" groups="pdk-cw-fs,pdk-fs" />
<project path="developers/build" name="platform/developers/build" remote="aosp" />
<project path="development" name="CyanogenMod/android_development" groups="pdk-cw-fs,pdk-fs" />
<project path="device/common" name="device/common" groups="pdk-cw-fs,pdk-fs" remote="aosp" />```
...

通过分析可以看出,作者将android的代码放在github上,并通过repo进行管理。

  • 自己需要改动的代码就建立仓库,放在自己的github上。

  • 不改动的代码就引用google原生的代码,这样就不需要在github上面建立仓库。

如果android的源码托管在github上的话可以采用这种方式,建立仓库的数量。一个android里面的git仓库接近500个。建立仓库,保存改动的代码,是个不错的方法。

当然也有很多人在自己的私有服务器搭建git仓库,放置android源码。


Tony Liu

2017-2-22, Shenzhen

repo manifest.xml 分析的更多相关文章

  1. repo manifest xml 文件修改后提交命令

    git push origin dev(本地分支):refs/for/tv/Internal_Jb910_develop_t

  2. 微擎模块的安装文件manifest.xml

    微擎在安装或卸载模块时会根据manifest.xml生成(或删除)数据库中相应记录,并执行manifest.xml里指定的脚本. manifest.xml文件内容详细介绍如下: manifest - ...

  3. manifest.xml微擎系统模块的安装文件内容

    微擎在安装或卸载模块时会根据manifest.xml生成(或删除)数据库中相应记录,并执行manifest.xml里指定的脚本. manifest.xml文件内容详细介绍如下: manifest - ...

  4. 每建一个Activity都要注册权限Manifest.xml

    每建一个Activity都要注册权限Manifest.xml 但是有时候自动注册好了,注意!不然的话是不能调用的!!!!!<activity android:name=".MainVi ...

  5. Solr Schema.xml和solrconfig.xml分析(转)

    Solr Schema.xml和solrconfig.xml分析 (http://yinwufeng.iteye.com/blog/964040) 一.字段配置(schema) schema.xml位 ...

  6. android之IntentFilter的用法_Intent.ACTION_TIME_TICK在manifest.xml不起作用

    在模仿一个天气预报的widget时候,用到了IntentFilter,感觉在manifest.xml注册的receiver跟用代码写registerReceiver()的效果应该是相同的,于是想证明一 ...

  7. 项目总结SpringMVC+hibernate框架 web.xml 分析(2)

    紧接 项目总结SpringMVC+hibernate框架 原理(MVC) applicationContext.xml 文件(3) 这一步讲解项目模块化的配置,项目中每个模块配置一个文件,命名规则为 ...

  8. Manifest XML signature is not valid(安装ClickOnce签名未通过验证)

    转载:http://stackoverflow.com/questions/12826798/manifest-xml-signature-is-not-valid 安装时,我的问题:  PLATFO ...

  9. Manifest.xml中删除了『存储/修改删除SD卡中的内容』和『手机通话/读取手机状态和身份』权限,但生成apk安装软件时仍提示 允许应用程序了解或使用这两个权限

    原因:Android系统会给targetSdk版本为“4”以下的应用自动分配WRITE_EXTERNAL_STORAGE 和 READ_PHONE_STATE 权限. 解放办法:在manifest.x ...

随机推荐

  1. C++ 设计模式 —— 訪问者(Visitor)

    訪问者设计模式的实现借助于两个继承体系, (1)elements:一个是被操作的类(基类及其子类) (2)visitors:一个定义了一系列操作的訪问者(基类及其子类) 訪问者模式是一种行为型设计模式 ...

  2. MDK5在调试中崩溃,提示“IDE已停止工作”

    出问题的原因是路径名太长,换个深度浅一点的路径就好了. 要注意,更换路径之后,要全部重新编译,否则调试的时侯MDK还会找旧路径的源代码.(嗯,MDK毛病是很多!)

  3. MATLAB(3)——GUI界面设计入门

    作者:桂. 时间:2017-03-01  18:43:35 链接:http://www.cnblogs.com/xingshansi/articles/6485688.html 声明:转载请注明出处, ...

  4. ps钢笔工具 (重要工具)

    ps钢笔工具 ctrl键 + 鼠标选中操作的点 = 移动点 alt键 + 方点 + 拖拉 = 拖出两个手柄 和 控制两端弧度 alt键 + 圆点 = 控制单向弧度

  5. OpenGl学习glMatrixMode()函数理解

    glMatrixMode()函数的参数,这个函数其实就是对接下来要做什么进行一下声明,也就是在要做下一步之前告诉计算机我要对“什么”进行操作了,这个“什么”在glMatrixMode的“()”里的选项 ...

  6. Linux环境下搭建测试环境(LAMP详细说明)

    一.安装虚拟机与CentOS7 传送门:https://www.cnblogs.com/mrgavin/p/9372393.html 注意:以下安装,我都是用的root权限. 二.安装Apache1. ...

  7. 一些常见的关于Linux系统的问题

    1 如何看当前Linux系统有几颗物理CPU和每颗CPU的核数? 答:[root@centos6 ~ 10:55 #35]# cat /proc/cpuinfo|grep -c 'physical i ...

  8. 在线升级java的版本

    真接rpm包安装javaxxxx.rpm 然后调整/etc/profile 如下: # tail -n /etc/profile JAVA_HOME=/usr/java/jdk1..0_45 PATH ...

  9. MySQL binlog日志三种模式选择及配置

    在认识binlog日志三种模式前,先了解一下解析binlog日志的命令工mysqlbinlog.mysqlbinlog工具的作用是解析mysql的二进制binlog日志内容,把二进制日志解析成可以在M ...

  10. 每日英语:First Offer: Take It Or Keep Waiting?

    Anyone who has searched for a job fresh out of college knows how difficult it is to get that first j ...