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

Android 源码下载编译

2010-09-18 15:23 351 查看
很久以前写的,从那个博客搬过来的。



一、系统篇

安装ubuntu,大家可以直接在硬盘装,也可以用虚拟机,对于初学者推荐虚拟机,非常方便,只要有硬盘镜像,即使重装系统,都不用重装ubuntu。

我用的是vmware6.5,装ubuntu8.10,具体过程我就不说了,但是有一点切记切记,vmware在安装的时候,要设置一个硬盘大小,一定要大于10G,最好是12G左右。

因为Android,包括版本更新工具,源码,编译中间obj文件,一起要差不多6、7个G,再加上系统2个G左右,小于10G的系统就太捉襟见肘了。

二、工具篇

装好ubuntu系统,要装相应的编译工具

gcc jdk之类,以及其他一些小工具(由于之前做毕业设计的时候,在ubuntu下装过ns2,很多东西都装过,因此这一步基本跳过),不过我还是尽量列一下,虽然不一定全,但是应该差不多。都装装吧!

java装完有的要设置环境变量(具体见我下一篇帖子吧)

sudo apt-get install python2.5

sudo apt-get install zlib1g-dev

sudo apt-get install git-core gnupg

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

sudo apt-get install python2.5(这个有人说不用装,我测试过的确这样,先可以不装,等编译有问题再说)

sudo apt-get install sun-java5-jdk(据网上高人说,这个一定要装java5的,不能装java6的,要不然会报如下错误

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.)

可以用java -version看看自己版本,如果不是java5的,就apt-get remove 给卸了

(如何用命令看已经安装了的所有包,这个我还没有研究出来,实在不行,就到UI界面去看吧)

三、下载篇

下载Android的源代码

1.用下载工具curl 下载一个,配置环境的脚本repo

curl http://android.git.kernel.org/repo > repo

这样在当前目录生成一个脚本文件repo,你也可以自己选择路径

这个脚本是要放到环境变量目录中,用来运行的

由于我直接用root,我的环境变量就是 /bin

所以我就直接 url http://android.git.kernel.org/repo > /bin/repo

2.给该脚本赋予可执行权限

sudo chmod a+x /bin/repo

3.执行初始化命令

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

中间会提示输入电子邮件什么的,(据网上高人说,如果你打算要提交patch的话,用google accounts注册过的邮箱)

4.同步代码

同步代码的命令 repo sync(先别急,看完第五条再同步)

切记,切记

这个同步下来的东西是在当前目录下的,而且是一个因此文件夹.repo 用 ls -al 能看到

所以,你一定要自己建立一个目录,比如/home/android,进入这个目录再执行这个命令,要不然就会生成很多多余的文件,你还不知道到底在哪里。

我第一次就是这个,执行了N次,没有看到一个代码,还好,我用find -name 查找,才把他们揪出来了。

5.repo 补充

repo 是一个同步命令,如果输入repo 就是同步所有的代码吧,如果加个参数就是同步某个包的代码。

既然有全部同步的命令,为什么我们要自己那么麻烦去同步其它的呢?因为在同步的过程,经常会出现网络错误。

所以,网上有高人指点说,对于比较大的包,加参数同步,其它的,就不加参数。

在执行初始化好,就是第三步的目录下,我们 cd .repo,就会看到project.list文件,我们可以看到所有project,总共116个。比如 repo sync build、 repo sync external/apache-http等

据个人记忆,好像build 、bionic、dalvik、prebuilt、frameworks/base这几个包比较大,建议单独同步。

(据网上高人说,repo服务器,每个终端最多支持3个线程,也就是我们可以同时开三个repo)

同步过程网络失败太正常了,多试几次就好了,全部下来大概1.3个G,具体时间,看个人网速。

四、编译篇

代码下载完成后,进入代码目录,这里就以/home/android/为例

里面有一个build/envsetup.sh ,执行.(这个是配置编译环境的,具体细节我目前还不清楚)

然后,就再到/home/android/,执行make,然后就睡觉去吧!

最好生成的文件在/home/android/out 里面

五、容错篇

运气好的话,一次编译通过,有时候难免会出错,网上有大侠,列出几种常见错误以及解决办法。

1.

Mysterious build failure when javac isn't presentIf you see the build failure:

build/core/find-jdk-tools-jar.sh:
line 5: [: too many arguments

build/core/host_java_library.mk:28:
*** multiple target patterns. Stop.

It's probably because javac is not in your path. The build should
fail with a better error message.

java没有设置环境变量

2.

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.

这个上面提过,也是java的问题,据说应该用1.5的版本

3

还有我遇到过更弱智的问题,就是磁盘空间不够了……汗!

不过只要你按照我的方法设置大一点的空间,就不会有这个问题了

choosecombo De rel moon eng

先到此为止,以后遇到好的东西,再和大家一起共享。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: