(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