最近准备学下android系统开发,今天在vm上安装了UBuntu11.10,又下载了android2.3.5的代码,记录一下整个过程吧
因为官网上有这么一句话:Note: The source download is approximately 6GB in size. You will need 25GB free to complete a single build, and up to 90GB (or more) for a full set of builds.所以大家在安装Ubuntu给Ubuntu分配空间时注意点吧,我是分配了50个G.
刚安装完Ubuntu11.10以后改下sources.list,否则下载软件时会出现一些错误,这个过程比较简单http://pd007.blogbus.com/logs/165919775.html
搞定后,跟着官网来http://source.android.com/source/initializing.html,先看下python和git的版本,在UBuntu11.10上已经默认有python2.7.2+的版本,通过指令安装git即可sudo apt-get install git
在官网上如果把java6的那几条语句在terminal下跑一遍,把java6安装成功。编译android2.3以后的版本都是适用java6,之前的版本是java5。
紧接着安装要求的包,我是把On Ubuntu 11.10,32-bit (experimental)的指令都跑了一遍
在上面所有的安装过程中遇到Y/N全选Y
这个时候就开始准备下载代码了,按照官网的指令来配repo,下载好即可http://source.android.com/source/downloading.html,我是直接从同学那里拷过来的,省去了漫长的下载过程,至此所有环境都已经搞定,开始编译,进入android源码根目录,参照这里http://source.android.com/source/building.html,1. source build/envsetup.sh 2. 有点,点后空格 . build/envsetup.sh 3.lunch full-eng开发者权限,然后开始在源码根目录下直接输入make4个字母开始编译,过程中出现2个问题:
Question:1
<command-line>:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror] <built-in>:0:0: note: this is the location of the previous definition cc1plus: all warnings being treated as errors make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1
此处编译错误是由于ubuntu 11.10采用了GCC4.6.1导致的。
解决方法:
修改源码目录下/build/core/combo/HOST_linux-x86.mk文件:
将以下语句
HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
修改为
HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
Question:2
Clock skew detected.your build may be incomplete
这是由于我已经生成了这些img,所以就略过了 ,如果没有生成这些img的话,到网上搜一下就可以搜到解决方案
out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img
Install system fs image: out/target/product/generic/system.img
Target ram disk: out/target/product/generic/ramdisk.img
Target userdata fs image: out/target/product/generic/userdata.img
2个小时左右源码全部编译完成,emulator一下就可以看到我们的模拟器了
最后在根目录下make sdk