第一步:對環境的准備:
1. 在windows下安裝virtualbox,virtual下載地址:http://www.virtualbox.org/wiki/Downloads,下載最新版本,我的是4.0.2 r69518
2. 下載Ubuntu 64bits ISO image, 我是下載的這裡:http://mirror01.th.ifl.net/releases/10.04.1/ubuntu-10.04.1-desktop-i386.iso
3. 在virtualbox上,安裝ubuntu,我選擇的都是缺省設置和安裝;
第二步:下載source code,我主要參考了 http://source.android.com/source/downloading.html,
1. download http://android.git.kernel.org/repo, 把文件 repo 放到你的linux命令執行路徑;
2. 因為公司只能用http代理上網,所以無法直接使用git協議連接到git server,倒是http協議可以,所以更改repo文件的這一行內容:
REPO_URL='git://Android.git.kernel.org/tools/repo.git'
為:
REPO_URL='http://android.git.kernel.org/tools/repo.git'
3. 在命令行內,執行全局代理服務器設置:
export http_proxy=http://proxyIP:proxyPort
export HTTP_PROXY=http://proxyIP:proxyPort
我也不知道大寫的還是小寫的要用到,反正都設上吧!
4. In your working directory, repo init -u http://android.git.kernel.org/platform/manifest.git
5. 執行完成後,你會在工作目錄下獲得這個文件:working_dir/.repo/manifest.xml
把它的git://android.git.kernel.org/ 改為:http://android.git.kernel.org/
6. 在工作目錄下執行:repo syn
7. 休息,等待漫長的時間完成上一步;大約要下載兩G多的內容
8. 運行,gpg --import,然後輸入key的內容,key的內容可以在http://source.android.com/source/downloading.htm找到;
第三步:准備編譯環境,請參考http://source.android.com/source/initializing.html:
1. 設置好deb的software repo source, 增加這兩個:
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"
2. 執行更新sudo apt-get update
3. 安裝sun-java6-sdk: sudo apt-get install sun-java6-jdk
據說要編譯Froyo和老的版本要java5,我沒有試
4.參考網頁上說要在ubuntu系統中安裝如下軟件包:
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
我在執行過程中發現兩個問題:
a. lib32z-dev在我的系統中不存在,我系統中只有:lib32z1-dev,所以裝這個;
b. 除了上面的軟件包要安裝外還要安裝g++-multilib,否則會發生找不到合適的stdc++庫的錯誤,google官方參考網頁說,只有在編譯Froyo以前的版本才需要,這種說法在我的環境下是錯誤的。
5. 據說還要設置usb設備的訪問,我這次沒有作,以後做了再記錄下來;
第四步:編譯全系統
1. source ./build/envsetup.sh
2.lunch full-eng
3. make -j4
如果你沒有給你的虛擬機分4個cpu,就不要加-j4了,會更慢
我花了兩個多小時完成的make -j4,
還沒有測試編好的emulator(虛擬機上的虛擬機:emulator on virtualbox)。等測試完成,再寫步驟。