ubuntu 编译android2.3.1系统源代码

    最近看了一些资料,学习了android系统源码的编译。在这里做一下记录。
我的编译环境:ubuntu11.04, jdk1.6, 2.1GHz主频,  2G内存,  32位机
先上图吧,这是我编译的系统,用模拟器运行起来的效果:




1:安装必要的工具:

安装git工具:
在命令行执行如下命令
sudo apt-get install git-core gnupg


安装jdk,这个就百度吧。

2:下载源代码:
首先建立一个bin目录,来放置即将下载的repo工具:
mkdir ~/bin


下载repo脚本,在ubuntu执行命令:
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

chmod a+x ~/bin/repo

经过这两条命令在你的~/bin/目录下面已经有了一个名为“repo”的脚本文件,并且该文件已经有了可执行的权限。

新建一个目录来存放源代码:
mkdir android

cd android

下载服务器上最新的源代码命令
repo init -u https://android.googlesource.com/platform/manifest

如果不想下载最新的源代码就加上一个参数 -b,比如下载2.3.1的系统源码
repo init -u https://android.googlesource.com/platform/manifest -b android-2.3.1_r1

执行这条命令之后,在android文件夹下面就有了一个.repo文件夹,按Ctrl+h键可以看到。

开始下载,执行命令:
repo sync


注意:下载源代码的时间有点久,因为源代码很大,我下载的是2.3.1的,总共7个多G,里面包含了.repo文件夹中的内容。期间可能会出现断网,或者你等不了那么就想下一次接着下载,可以直接关掉。下一次你准备下载的时候就按照之前的步骤将repo工具路径加入环境变量中,在android目录再次执行命令
repo sync


下载完源代码后你的目录应该是这样:



3:编译源代码:
     因为android2.2以后的源码官网都建议使用64位机来编译,这里需要修改一下它的默认规则为32位:
1)修改build/core目录下的main.mk文件:
     ifeq ($(BUILD_OS),linux)
     build_arch := $(shell uname -m)
     #Change the following line for building on a 32-bit system.
     #ifneq (64,$(findstring 64,$(build_arch)))
     ifneq (i686,$(findstring i686,$(build_arch)))
     $(warning ************************************************************)
     $(warning You are attempting to build on a 32-bit system.)
     $(warning Only 64-bit build environments are supported beyond froyo/2.2.)
     2)找到下列文件:
     /external/clearsilver/cgi/Android.mk
     /external/clearsilver/cs/Android.mk
     /external/clearsilver/java-jni/Android.mk
     /external/clearsilver/util/Android.mk
     修改LOCAL_CFLAGS和LOCAL_LDFLAGS变量:
     # This forces a 64-bit build for Java6
     # Change the following two lines for building on a 32-bit system.
     # LOCAL_CFLAGS += -m64
     # LOCAL_LDFLAGS += -m64
     LOCAL_CFLAGS += -m32
     LOCAL_LDFLAGS += -m32

编译:
$~android/make

第一次编译的时间有点长,如果顺利的话等3、4个小时就编译成功了。其中可能出现一些小问题,稍微百度一下就可以解决掉的。

4:运行编译后的镜像:
设置镜像和emulator的环境变量
export PATH=$PATH:~/android/out/host/linux-x86/bin

export ANDROID_PRODUCT_OUT=~/android/out/target/product/generic


运行:
emulator


参考资料:
http://blog.csdn.net/luoshengyang/article/details/6559955
http://source.android.com/source/downloading.html

猜你喜欢

转载自swerit.iteye.com/blog/1682569