android 源码下载及编译

(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

效果如下:

android 源码下载及编译_第1张图片

哇噻,终于好了 ~~

编译某一个包:

make ONE_SHOT_MAKEFILE=packages/apps/Launcher2/Android.mk


 

你可能感兴趣的:(android 源码下载及编译)