Android平台为一开源平台,所有的源码都是公开的,你可以从source.android.com 获取源码,自行编译,或者定制Android OS,本篇先介绍编译Android OS 的编译环境。
目前的版本Android 2.3 源代码大约2.6G,最小编译环境需要10G的空闲空间。
Google建议使用的编译环境为Ubuntu (10.04 以上版本),你可以使用使用虚拟机,Google建议使用的内存为8G 以上,因此需要64 Ubuntu系统)
注:本人试过使用32位Ubuntu系统,2G内存,也是可以编译的。但编译比较费时,可以作为学习环境使用。
编辑Android所需的软件如下:
- Python 2.4 — 2.7 ,可以从python.org 下载
- JDK 6 (编译Gingerbread 以上版本)或JDK 5 (编译Froyo 及以下版本),可以从java.sun.com 下载。
- Git 1.5.4 (以上) 为Google 源码使用的SCM工具。
安装Ubuntu
参考http://www.ubuntu.com/ ,可以使用光盘,USB盘,虚拟机可以直接使用*.iso 作为模拟光驱。
安装JDK
Java 6: Gingerbread 以上版本 (建议使用)
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
安装Java 5 :Froyo 以下版本
$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper
main multiverse"
$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper-updates
main multiverse"
$ sudo apt-get update
$ sudo apt-get install sun-java5-jdk
安装所需的软件包
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
注:如果使用32位Ubutu ,可以使用如下替代
lib32ncurses5-dev --> libncurses5-dev
ia32-libs --> not needed
lib32readline5-dev -->libreadline5-dev
lib32z-dev -->libz-dev
配置USB访问
在Ubutu系统下,普通用户缺省情况下无权限访问USB 设备,需要配置USB使用户可以访问USB
下面为配置方法,创建一个文件 /etc/udev/rules.d/51-android.rules ,然后在其中输入下面内容
# adb protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12",
MODE="0600", OWNER="<username>"
# fastboot protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff",
MODE="0600", OWNER="<username>"
# adb protocol on crespo (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22",
MODE="0600", OWNER="<username>"
# fastboot protocol on crespo (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20",
MODE="0600", OWNER="<username>"
注意将<username> 替换成你自己的用户名。 这些rules 在下次插拔USB设备时会起作用。
此外 也可以使用Mac OS 来编译Android OS,但目前不支持在Windows平台上编译(即使你安装Cygwin 之类的软件)
原文参见 http://source.android.com/source/initializing.html