How to Add New Project into AOSP

在上一篇《How to Create Branch in Android Local Mirror》中,我介绍了如何在Android Mirror中创建分支,然后进行协同开发。既然是分支,那么增加、删除、修改文件等操作,自然是少不了的,麻烦不到哪里去。不过,如果是增加一个新的工程,就稍微麻烦些了。

过去的几个月里,我不断地在看《Android系统源代码情景分析》《深入理解Android:卷I》,两位作者讲述知识的方式有一个共同点,就是用图表(UML)来描述,用代码来验证。所以,不可避免我要创建一些测试工程,同时,这些工程还要在不同的机器上协同开发。

接下来,我把在AOSP中,如何增加一个新工程的流程,整理成文字,希望帮助到其他人。

Step 1

明确下,Android Mirror 在一台 Debian 机器上,而我用来工作的 Android Source 在另外一台 Mac OS X 上。

首先登录到 Debian 系统以后,进入到 Android Mirror 的目录。
$ cd ~/android-mirror

Step 2

我考虑建立一个叫做 pointer-demo 的工程,用来练习 RefBase、LightRefBase、sp、wp,这些在 Android 里到处可见的东西,不得不掌握。

想到这里,我决定在 platform/external/ 创建这个 Repository
$ git init --bare platform/external/pointer-demo.git

完毕后,可看到如下输出:

Initialized empty Git repository in /home/poemcode/android-mirror/platform/external/pointer-demo.git/

Step 3

在前一步完成以后,Repository 是一个“裸”版本库,其中还没有我需要的分支。--因为我在 Mac OS X 上,创建了一个 poemcode-5.0 的分支。显然,pointer-demo 还没有这个。

那么就进入到临时目录,--随便一个目录都可以,用完后删除掉。
$ cd /tmp

克隆代码出来:
$ git clone /home/poemcode/android-mirror/platform/external/pointer-demo.git pointer-demo

然后,进入到 pointer-demo,把之前写好的代码文件等拷贝过来,把它提交了。
$ git add Android.mk
$ git add lightpointer.cpp
$ git commit -m 'add the demo code: LightBaseRef and sp'
$ git push

此时,代码仓库中只是有了 master 分支,还没有我需要的分支,继续操作。先在本地创建需要的分支,然后推送过去。
$ git checkout -b poemcode-5.0
$ git push origin poemcode-5.0

完成以后,这个目录就可以删除了。

Step 4

接下来回到 Mac OS X,进入到 Android Source 目录,编辑“根”目录下的 .repo/manifests/default.xml 文件,明确“告诉” repo,多出了pointer-demo工程。

然后把修改提交了:
$ git add default.xml
$ git commit -m 'Add platform/external/pointer-demo'
$ git push

Step 5

最后,执行同步:
$ repo sync platform/external/pointer-demo

完成后检查external目录下,是不是多出了pointer-demo目录,并进入到该目录。
$ git status

会得到如下输出:

当前不在任何分支上。
无文件要提交,干净的工作区

没有关系,对分支进行执行:
$ git checkout poemcode-5.0

可以看到输出:

分支 poemcode-5.0 设置为跟踪来自 aosp 的远程分支 poemcode-5.0。
切换到一个新分支 'poemcode-5.0'

最后确认一下:
$ git status

位于分支 poemcode-5.0
您的分支与上游分支 'aosp/poemcode-5.0' 一致。
无文件要提交,干净的工作区

最后提醒一句,完成增加新工程这个目标,上述做法并非唯一,所谓条条大道通罗马,如果你有其他方法,欢迎告诉我。

Leave a comment

Your comment