Android 源码下载编译

很久以前写的,从那个博客搬过来的。



一、系统篇
安装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.co
de.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.co
de.Symbol$CompletionFailure: class file for
sun.util.resources.OpenListResourceBundle not found2.
这个上面提过,也是java的问题,据说应该用1.5的版本
3
还有我遇到过更弱智的问题,就是磁盘空间不够了……汗!
不过只要你按照我的方法设置大一点的空间,就不会有这个问题了
choosecombo De rel moon eng
先到此为止,以后遇到好的东西,再和大家一起共享。

 

你可能感兴趣的:(java,vmware,android,脚本,ubuntu,Class)