Monday, June 21, 2010

Using the local_manifest.xml file in repo to customize your Android project setup

This post will discuss how to use repo and the local_manifest.xml file to keep track of projects that are not part of the default manifest for the Android open source project. This can be used to keep track of some projects that are maintained by the Android team but are not included in the default distribution. It can also be used to include other git-based projects within your android platform source tree. Adding a local manifest file is a good way to set up a personalized environment to work with Android for hacking or in a small team. Any additions to Android can be kept in separate git repositories and tracked using the local manifest. For commercial level projects it may be better to run your own repo server and edit the manifest directly to make sure that it is version controlled and that all developers see the same projects. We may get back to that topic in a separate blog post.

Now let's take a look at the practical details. The format of the local manifest file follows the standard manifest format described in the manifest-format.txt file under .repo/repo/docs in the Android Open Source project. To create a local manifest add a file with the name local_manifest.xml and place it directly in the .repo folder of your Android Open Source Project. It will be parsed by repo as part of a normal repo sync.

I keep a project on machine to track the latest development in the Android platform. It is setup to track the current master branch in the default configuration. Since I often work with hardware as well I am also interested in developments in the kernel. Currently there are a number of different kernel trees being run as part of android. None of them are part of the default manifest. In my setup I want to track the common kernel but also see what is going on with hardware support for Qualcomm (msm) and TI (omap) platforms. These are all maintained by the android team and I can use the default remote site to get them. I need however to inform repo about what branch I want to track by adding the revision tag. For each project add a tag like this:
<project path="kernel"
      name="kernel/common"
      remote="korg"
      revision="android-goldfish-2.6.29"/>

Another thing I also find myself using is Busybox and since I set it up the build config and do some adaptations when using it with Android I like to track the source for that as well within my Android tree. This can easily be achieved in the local manifest by adding a new remote site for Busybox and then adding the project itself like this:
<remote  name="busybox"
           fetch="git://git.busybox.net/"/>
<project path="busybox"
      name="busybox"
             remote="busybox"/>
To sum things up this means that each time I do a repo sync I will get the latest version of the Android Open source project and also updated repositories for the three different kernel trees that I track and an updated busybox source. All in all my local_manifest file looks like this:
<?xml version="1.0" encoding="UTF-8"?>
  <manifest>

    <remote  name="busybox"
           fetch="git://git.busybox.net/"/>

    <project path="kernel"
      name="kernel/common"
      remote="korg"
      revision="android-goldfish-2.6.29"/>
    <project path="kernel_msm"
      name="kernel/msm"
      remote="korg"
             revision="android-msm-2.6.32"/>
    <project path="kernel_omap"
      name="kernel/omap"
      remote="korg"
             revision="android-omap-2.6.32"/>
    <project path="busybox"
      name="busybox"
             remote="busybox"/>
  </manifest>

/Mattias

5 comments:

  1. Thank you for sharing with useful survey. It necessary to know that windows mobile development could help in your industry by installing customized software products.

    ReplyDelete
  2. It should be noted that local_manifest.xml should now be placed in a sub-directory called local_manifests under .repo

    ReplyDelete
  3. Not only does a helpdesk program allow the end users to submit necessary tickets to the helpdesk for timely resolution. Helpdesk software will typically allow for tracking of assets, tracking of ticket numbers for metrics, and compilation of resolution procedures for future resolution usage. driver toolkit crack

    ReplyDelete
  4. What about a new recently released device which dont have kernel sources in github ?

    ReplyDelete
  5. Chances are, if you understand what file sharing is, you will be able to get the hang of Aries fairly easily.
    downloadshareitapp.com

    ReplyDelete