这几天折腾了好几天,查了N多资料,终于把Ubuntu 11.10 的 android 编译环境搭建好了,写在这里,算个备忘吧。

本教程中的操作都是基于Oracle VM VirtualBox虚拟机来完成的,下载代码部分以tom3q的三星的i5700-spica代码为例。

主要步骤:
1、安装VirtualBox
https://www.virtualbox.org/wiki/Downloads
2、安装Ubuntu 11.10(64位)
http://www.ubuntu.com/download/ubuntu/download 

3、配置编译环境 
(1)安装JDK
Ubuntu 11.10中已经默认不再有JDK的源,按照Google给出的解决方案如下:

$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

如果此时你仍然没有可用源来安装JDK的话,我们来手动安装他。


首先,下载JDK 1.6 的包 http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u31-download-1501634.html,这里我们使用 Linux 64bit jdk-6u31-linux-x64.bin


然后,安装它


$ sudo mkdir /usr/lib/jvm
$ sudo cp jdk-6u31-linux-x64.bin /usr/lib/jvm
$ cd /usr/lib/jvm
$ chmod u+x jdk-6u31-linux-x64.bin
$ sudo sh jdk-6u31-linux-x64.bin
$ sudo mv jdk1.6.0_31/ java-1.6.0_31-sun/
$ sudo ln -s java-1.6.0_31-sun java-6-sun
$ sudo rm jdk-6u31-linux-x64.bin

最后,我们来配置下环境变量


$ sudo gedit /etc/environment

在文件的最后加入


PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/java-6-sun/bin"
CLASSPATH="/usr/lib/jvm/java-6-sun/lib"
JAVA_HOME="/usr/lib/jvm/java-6-sun"

让我们来看看JDK环境是否被正确配置好了,命令行中输入java -version试试,是不是出现了下列信息

java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
Java HotSpot(TM) Server VM (build 20.2-b06, mixed mode)

OK,JDK到此就安装完了,让我们来进行下一步,安装编译时需要的包。
(2)安装编译时需要的包

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
  x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
  libxml2-utils xsltproc



$ sudo apt-get install libx11-dev:i386



4、挂载硬盘
好了,环境已经基本搭建好了,这一步我们来为我们的虚拟机挂载一个专门存放代码的硬盘,这样做的好处是代码跟系统分开,可以更便于备份和使用。
现在VirtualBox中添加一块硬盘,设置 -> Storage -> SATA控制器->右击,选择“添加虚拟硬盘”,根据你的需要选择磁盘类型和存储位置。
然后启动你的Ubuntu系统,打开终端工具,

$ sudo fdisk -l #查看现有系统的磁盘空间,新加的磁盘一般名为 Disk /dev/sdb
$ fdisk /dev/sdb #为新磁盘分区
$ m #查看帮助信息
$ n #增加新分区
$ 1 #Partition number(1-4),分区编号,这里我们选择1
$ enter #回车,默认分区信息即可
$ w #保存设置并退出
$ sudo mkfs.ext4 /dev/sdb1 #格式化新分区,这里sdb1跟之前选择的分区编号一致
$ mkdir /code #在你自己的账户下建立code目录,新分区的挂载点
$ sudo mount -t ext4 /dev/sdb1 /code #将新磁盘分区挂载到/code目录下
$ df -h #查看挂载,可以看到新加的硬盘,/dev/sdb1
$ sudo gedit /etc/fstab #设置开机自动挂载,在最后一行加入 /dev/sdb1 /code ext4 defaults 0 0

重新启动下Ubuntu,是不是已经挂载好了新硬盘了呢。



5、下载代码


(1)安装REPO

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

由于国情的原因,可能Google的网站被屏蔽了,可以按照下面的方法来解决 

http://code.google.com/p/git-repo/

$ curl http://git-repo.googlecode.com/files/repo-1.14 > ~/bin/repo

(2)初始化REPO
一切OK了,让我们来下载代码吧,这里用我的神器i5700的代码为例。https://github.com/tom3q/android

$ cd code
$ mkdir spica-gingerbread
$ repo init -u git://github.com/tom3q/android.git -b gingerbread



(3)下载代码

$ repo sync

现在可以你可以基于源代码来进行你的开发工作了,加油吧!!!