(Google 官网http://source.android.com/source/)
一 编译环境搭建
1.初始话编译环境
源码大小大约为6G,完成一次编译需要25G左右,我的硬盘为50G.
2.建立linux环镜
Google doc(http://source.android.com/source/)推介使用ubuntu 10.10 64位(LTS),我的系统就是这个版本.一般需要以下软件:
Python 2.5 -- 2.7, which you can download from python.org.
GNU Make 3.81 -- 3.82, which you can download from gnu.org,
JDK 6 if you wish to build Gingerbread or newer; JDK 5 for Froyo or older. You can download both fromjava.sun.com.(Gingerbread,Froyo为android源码的一种标识)
Git 1.7 or newer. You can find it at git-scm.com.
3.安装java sdk
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
会出现找不到sun-java6-jdk的错误,我从 java.sun.com下载了jdk-6u31-linux-x64.bin文件并安装.注意要配置好环境变量,Google doc并没有说这点.
4.安装需要的包
$ 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
5.配置USB访问
打开
/etc/udev/rules.d/51-android.rules
文件(root),添加以下内容,将username替换为你的用戶名
# 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/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>"
# fastboot protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>"
# adb protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER="<username>"
# fastboot protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER="<username>"
# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="<username>"
# fastboot protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER="<username>"
# adb protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="<username>"
# fastboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="<username>"
# usbboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="<username>"
6.建立CCache(为了加快编译)
添加以下内容到.bashrc
export USE_CCACHE=1
export CCACHE_DIR=<~/.ccache>
(这句没看懂文档的意思,就这样写了)
二.下载源码
1.安装Repo
(确保家目录有bin目录,并且在PATH中)
$ mkdir ~/bin
$ PATH=~/bin:$PATH
(下载Repo脚本文件,并确保可执行)
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
2.初始化Repo客戶端
(source为放置源文件的地方)
$ mkdir source
$ cd source
下载Repo最新的版本(使用git branch -r命令来查看所有版本)
$ repo init -u https://android.googlesource.com/platform/manifest
下载指定的版本(我下载的是
android-4.0.1_r1
):
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
开始下载,在下载的过程中需要输入姓名和邮箱,如果下载的过程中出现中断,可以执行以下命令继续下载
$ repo sync
源码下载结束后执行,来设置缓充区大小
prebuilt/linux-x86/ccache/ccache -M 50G
3.编译系统
初始化编译环境
$ source build/envsetup.sh
选择一个目标
$ lunch full-eng
编译
$ make -j4
启动模拟器
$ emulator
哇噻,终于好了 ~~
编译某一个包:
make ONE_SHOT_MAKEFILE=packages/apps/Launcher2/Android.mk