您的位置:首页 > 移动开发 > Android开发

如何用repo下载android源码 (转)

2011-02-18 17:31 537 查看
转自http://blog.csdn.net/liujishen/archive/2009/07/30/4393041.aspx





<!--
@page { margin: 2cm }
PRE { font-family: "AR PL UMing HK" }
P { margin-bottom: 0.21cm }
-->


*************************************

1.安装repo前的准备:

*************************************

$ sudo apt-get install git-core gnupg (gnupg实际已自带)

  $ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl

  $ sudo apt-get install zlib1g-dev

  $ sudo apt-get install valgrind (可选,有21M大,我觉得一般人是用不到的)

  $ sudo apt-get install python2.5 (实际上不用装,Ubuntu 8.10已经自带)

  $ sudo apt-get install sun-java5-jdk

  注意,不要用 sun-java6-jdk, 不然在make sdk,具体来说是make doc这一步中,遇到这个错误:

Docs droiddoc: out/target/common/docs/dx

javadoc: error - In doclet class DroidDoc, method start has thrown an

exception java.lang.reflect.InvocationTargetException

com.sun.tools.javac.code.Symbol$CompletionFailure: class file for

sun.util.resources.OpenListResourceBundle not found2. 下载repo脚本,放到/bin目录下,加上可执行权限

|||||||对于公司的机器直接运行如下命令即可:(针对Ubuntu Linux (32-bit x86))||||||||

$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev

Required Packages:

Git 1.5.4 or newer and the GNU Privacy Guard. 

JDK 5.0, update 12 or higher. Java 6 is not supported, because of incompatibilities with @Override.

flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential, zip, curl. 

You might also want Valgrind, a tool that will help you find memory leaks, stack corruption, array bounds overflows, etc. 

$ sudo apt-get install valgrind

Intrepid (8.10) users may need a newer version of libreadline:

$ sudo apt-get install lib32readline5-dev

*******************************************

2.安装repo:

*******************************************

$ cd ~

$ mkdir bin                       //在主目录下新建一个bin文件夹

$ echo $PATH                      //查看环境变量

$ curl http://android.git.kernel.org/repo >~/bin/repo 

                                  //下载repo

$ chmod a+x ~/bin/repo

更改PATH:

$ mv ~/repo /bin

***************************************

3.代理设置.

***************************************

因为在公司需要用到代理才能连接外网.所以repo命令也要用到代理设置.具体如下.

因为git的代理是借助其他软件实现的.我们需要下载一个connet.c编译,在新建一个proxy文件。

(1)下载conect.c

下载地址:http://www.newbupt.org/wForum/disparticle.php?boardName=Linux&ID=20184,下载附件内容

(2)gcc -o connect connect.c              //编译成目标文件

     mv connect ~/bin                      //移动到~/bin

(3)设置一个wrapper 

 echo "/home/liu/bin/connect -H http://10.99.60.201:8080 $@" >> ~/bin/proxy  //注意不要漏掉$@

 chmod +x ~/bin/proxy 

(4)完成之后记得执行一下 proxy啊。方法:“. Proxy”

******

proxy的写法还有一个版本,我就是用的这个版本调通的。

1..在目录下/home/liu/bin下新建一个proxy.sh 的文件,内容如下:

#!/bin/sh

# /home/proxy.sh

# http proxy setting

export HTTP_PROXY=10.99.60.201:8080

export http_proxy=$HTTP_PROXY

# set git to use ssh over http proxy

export GIT_SSH="/home/liu/bin/socks-ssh.sh"

export GIT_PROXY_COMMAND="/home/liu/bin/socks-gw.sh"

2.在目录下/home/liu/bin下新建一个socks-ssh.sh文件,内容如下:

#!/bin/sh

# /home/liu/bin/socks-ssh.sh

ssh -o ProxyCommand="/home/liu/bin/socks-gw.sh %h %p" $@

3.在目录下/home/liu/bin下新建一个socks-gw.sh文件.内容如下.

#!/bin/sh

# /home/liu/bin/socks-gw.sh

# This script connects to a HTTP proxy using connect.c

connect -H 10.99.60.201:8080 $@

注意:不要忘记执行一下“. proxy”(中间有空格)

********

****************************************

4.准备完成,开始下载源代码:

****************************************

$ mkdir myandroid         //新建一个存取代码的文件夹

$ cd myandroid            //进入此文件夹

    

在myandroid目录中执行

$ repo init -u git://android.git.kernel.org/platform/manifest.git

  中间会提示输入电子邮件什么的,如果你打算要提交patch的话,用google accounts注册过的邮箱

        在myandroid中执行 repo sync就可以开始下载源码了

$ repo sync

下载源代码说明:

如果想拿某个branch而不是主线上的代码,我们需要用-b参数制定branch名字,-m参数制定manifest的名字,比如:

$ repo init -u git://codeaurora.org/platform/manifest.git -b [branch] -m [manifest]

              //设置要同步的目录,地址

$ repo sync        //开始同步源代码,即开始下载

例如:

$ repo init -u git://android.git.kernel.org/platform/manifest.git -b donut -m Q8650BSDCANLYA3170.xml  

$ repo sync            

但是这一步非常慢,这里有些文档中没有的技巧了:

repo 的使用请看repo help。如果只是要学习源码的话,那只用repo sync一个命令就行。repo sync不带参数的话会更新所有子项目,可以repo sy
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: