Ubuntu 8.04下编译Android源码全过程

转自:http://blog.csdn.net/dongfengsun/archive/2009/10/16/4679902.aspx

 

一、 获取 Android 源代码

Git Linux Torvalds Linux 之父)为了帮助管理 Linux 内核开发而开发的一个开放源码的分布式版本控制软件,它不同于 Subversion CVS 这样的集中式版本控制系统。在集中式版本控制系统中只有一个仓库( Repository ),许多个工作目录( Working Copy ),而在 Git 这样的分布式版本控制系统中(其他主要的分布式版本控制系统还有 BitKeeper Mercurial GNU Arch Bazaar Darcs SVK Monotone 等),每一个工作目录都包含一个完整仓库,它们支持离线工作,本地提交可以稍后提交到服务器上。

 

因为 Android 是由 Kernel Dalvik Bionic Prebuilt build 等多个项目组成,如果我们分别使用 Git 来逐个获取显得很麻烦,所以 Android 项目编写了一个名为 Repo Python 的脚本来统一管理这些项目的仓库,使得项目的获取更加简单。

 

Ubuntu 8.04 上安装 Git 只需要设定正确的更新源,然后使用 apt-get 就可以了, apt-get 是一条 Linux 命令,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。

apt-get 命令一般需要 root 权限执行,所以一般跟着 sudo 命令。

 

sudo apt-get install git-core curl

 

这条命令会从互联网的软件仓库中安装 git-core curl

 

其中 curl 是一个利用 URL 语法在命令行方式下工作的文件传输工具,它支持很多协议,包括 FTP FTPS HTTP HTTPS TELENT 等,我们需要安装它从网络上获取 Repo 脚本文件。

 

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

 

这句命令会下载 repo 脚本文件到当前主目录的 /bin 目录下,并保存在文件 repo 中。

 

最后我们需要给 repo 文件可执行权限

 

chmod a+x ~/bin/repo

 

接下来我们就可以利用 repo 脚本和 Git curl 软件获取 Android 的源代码了:)

 

首先建一个目录,比如 ~/android

然后使用下面命令获取源码:

 

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

 

这个过程会持续很长的时间(笔者下载了一天),下载完毕后会看到 repo initialized in /android 这样的提示,说明本地的版本库已经初始化完毕,并且包含了当前最新的 sourcecode

 

如果我们想拿某个分支版本的代码,而不是主线代码,需要使用 -b 参数指定 branch 的名字,比如:

 

repo init –u git://android.git.kernel.org/platform/manifest.git –b cupcake

 

如果我们只是想获取某一个 project 的代码,比如 kernel/common ,就不需要 repo 脚本了,直接使用 Git 工具即可,如果仔细研究 repo 脚本会发现, repo 脚本其实就是组织 Git 工具去获取各个 Project 并把它们组织到同一个项目 Android 内。

 

git clone git://android.git.kernel.org/kernel/common.git

 

我们上面使用 repo 脚本获取了各个项目,那么接下来就需要把整个 Android 代码树同步到本地,如下:

 

repo sync project1 project2 …

 

笔者使用 repo sync 命令直接同步全部项目到本地。

 

二、 源码编译

 

全部同步完毕后,进入到 Android 目录下,使用 make 命令编译,你会发现出现如下错误提示:

 

host C: libneo_cgi <= external/clearsilver/cgi/cgi.c
external/clearsilver/cgi/cgi.c:22:18: error: zlib.h: No such file or directory

 

这个错误是因为我们缺少 zlib1 g-dev ,需要使用 apt-get 命令从软件仓库中安装,如下:

 

sudo apt-get install zlib1 g-dev

 

同理,我们还需要依次安装如下软件

 

sudo apt-get install flex

sudo apt-get install bison

sudo apt-get install gperf

sudo apt-get install libsdl-dev

sudo apt-get install libesd0 -dev

sudo apt-get install libncurses5-dev

sudo apt-get install libx11 -dev

 

以上软件全部安装完毕后,运行 make 命令再次编译 Android 源码。

 

这个时候你会发现出现很多 java 文件无法编译的错误,打开 Android 的源码我们可以看到在 android/dalvik/libcore/dom/src/test/java/org/w3c/domts 下有很多 java 源文件,这意味着编译 Android 之前需要先安装 JDK

首先从 sun 官方网站下载 jdk-6u16-linux-i586.bin 文件并安装它。

 

Ubuntu 8.04 中, /etc/profile 文件是全局的环境变量配置文件,它适用于所有的 shell 。在我们登陆 Linux 系统时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile ~/.bash_login ~/.profile 文件中的其中一个,执行的顺序和上面的排序一样。如果 ~/.bash_profile 文件存在的话,一般还会执行 ~/.bashrc 文件。

       所以我们只需要把 JDK 的目录放到 /etc/profile 里即可,如下:

 

JAVA_HOME=/usr/local/src/jdk1.6.0_16

PATH=$PATH:$JAVA_HOME/bin:/usr/local/src/android-sdk-linux_x86-1.1_r1/tools:~/bin

 

然后重新启动一下机器,输入 java –version 命令,提示如下信息代表配置成功:

 

java version "1.6.0_16"

Java(TM) SE Runtime Environment (build 1.6.0_16-b01)

Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode, sharing)

 

       在编译完整个项目后,终端会出现如下提示:

       Target system fs image: 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
Installed file list: out/target/product/generic/installed-files.txt
root@dfsun2009-desktop:/bin/android #

三、 源码运行

 

在编译完整个项目后,如果我们需要观看编译后的运行效果,那么就需要在系统中安装模拟器 android-sdk-linux_x86-1.1_r1 ,这个 SDK 的下载地址为:

 

linux: http://dl.google.com/android/android-sdk-linux_x86-1.1_r1.zip
mac:
http://dl.google.com/android/android-sdk-mac_x86-1.1_r1.zip
windows:
http://dl.google.com/android/android-sdk-windows-1.1_r1.zip

 

解压后需要把 /usr/local/src/android-sdk-linux_x86-1.1_r1/tools 目录加入到系统环境变量 /etc/profile 中。

 

然后找到编译后 android 的目录文件 out ,我们发现在 android/out/host/linux-x86/bin 下多了很多应用程序,这些应用程序就是 android 得以运行的基础,所以我们需要把这个目录也添加到系统 PATH 下,在 $HOME/.profile 文件中加入如下内容:

 

PATH=”$PATH:$HOME/android/out/host/linux-x86/bin”

 

接下来我们需要把 android 的镜像文件加载到 emulator 中,使得 emulator 可以看到 android 运行的实际效果,在 $HOME/.profile 文件中加入如下内容:

 

ANDROID_PRODUCT_OUT=$HOME/android/out/target/product/generic
export ANDROID_PRODUCT_OUT

 

然后重新启动机器。

 

下面就可以进入到模拟器目录中并启动模拟器

 

cd $HOME/android/out/target/product/generic
emulator -image system.img -data userdata.img -ramdisk ramdisk.img

 

 

总结一下安装过程中的关键点:

1:JDK版本必须安装

2:利用下面的命令确保所需软件都被正确安装

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

3:内存及虚拟内存保证在2GB以上,可以采用命令行free -m查看内存是否足够,如果内存不够终端停滞


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值