Manifest

MuYusen 于 2020-01-05 发布 本文总阅读量

Manifest

Android使用repo来管理多个Git项目。它需要一个manifest XML文件来指示这些git项目的属性。

repo manifest XML可以包含下面的元素。 以如下,manifest片段为例:https://github.com/CyanogenMod/android

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote  name="github"
           fetch=".."
           review="review.cyanogenmod.org" />
  <remote  name="private"
           fetch="ssh://git@github.com" />
  <remote  name="aosp"
           fetch="https://android.googlesource.com"
           review="android-review.googlesource.com"
           revision="refs/tags/android-7.1.1_r6" />
  <default revision="refs/heads/cm-14.1"
           remote="github"
           sync-c="true"
           sync-j="4" />
  <!-- AOSP Projects -->
  <project path="build" name="CyanogenMod/android_build" groups="pdk,tradefed">
    <copyfile src="core/root.mk" dest="Makefile" />
  </project>
  <project path="build/blueprint" name="platform/build/blueprint" groups="pdk,tradefed" remote="aosp" />
  <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" />
</manifest>

Manifest元素

最顶层的XML元素。

remote元素

设置远程git服务器的属性,包括下面的属性:

一个manifest文件中可以配置多个remote元素,用于配置不同的project默认下载指向。

default元素

设定所有projects的默认属性值,如果在project元素里没有指定一个属性,则使用default元素的属性值。

Example:

    <default remote="main" revision="platform/main"/>

project元素

指定一个需要clone的git仓库。

    Project元素下面会有两个子元素。Copyfile和linkfile
        <copyfile src="core/root.mk" dest="Makefile" />
        <linkfile src="root.bp" dest="Android.bp" />
            Copefile:复制,cp src dest
            Linkfile:软链接 ,ln -s src dest
    Example:
    <project groups="aosp" path="device/driver/armv7" revision="600aab270ce712b62b268055737cabcded59bf04"/>

Include元素

通过name属性可以引入另外一个manifest文件(路径相对与manifest repository’s root)。