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.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
  先到此为止,以后遇到好的东西,再和大家一起共享。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值