【2013.08.03 tonyfield】
一直想嘗試android源碼的編譯,這兩天正好海思代碼的編譯也需要ubuntu環境,於是安裝了ubuntu 12.04,安裝時選了語言為中文,因此下面很多狀態及錯誤報告都是中文了,另外分配了4G swap分區,200G ext4主分區。因為聽說android源碼編譯需要100G空間,加上考慮磁盤余量作為工具安裝及代碼備份,給了200G,反正現在誰都不缺這點兒硬盤空間。
關於源碼的下載官方文檔是 http://source.android.com/source/downloading.html#initializing-a-repo-client
1. 下載 些工具,在編譯之前 git-core 和 curl 是必需的
$ sudo apt-get install git-core
$ sudo apt-get install curl
2 安裝java6
注意:openjdk不推薦使用,編譯中可能造成混淆及功能缺失。通過以下命令卸載openjdk,
$ sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*
2.1 在/etc/apt/sources.list 末尾加上如下行:
###for install Java6
deb http://ppa.launchpad.net/ferramroberto/java/ubuntu natty main
2.2 添加partner源
sudo add-apt-repository "deb http://archive.canonical.com/ubuntu maverick partner"
2.3 更新系統
$ sudo apt-get update
2.3 安裝 java6-jre
$ sudo apt-get install sun-java6-jre sun-java6-plugin
2.4 安裝 java6-jdk
$ sudo apt-get install sun-java6-jdk sun-java6-plugin
2.5 察看版本
$ java -version
顯示信息如下:
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Server VM (build 20.1-b02, mixed mode)
3. 執行curl
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
就報告網絡不可達,用了類似下面的代理設置后, curl加上 -v 參數啟用代理功能,還是不能連接。
$ export HTTP_PROXY
=116.228.55.184:80;
$ curl -v https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
可以到 http://code.google.com/p/git-repo/downloads/list 下載一個保存為 ~/bin/repo
或者使用下面命令,具體版本號參考前面網頁中顯示的最新版本號。
curl http://git-repo.googlecode.com/files/repo-1.19 > ~/bin/repo
修改執行權限
chmod a+x ~/bin/repo
4. 建立並進入android源代碼目錄
$ mkdir <android源代碼目錄> $ cd <android源代碼目錄>
5. 執行 repo init 准備下載最新版本android代碼,用下面命令准備下載主干(main / trunk)版本
$ repo init -u https://android.googlesource.com/platform/manifest
或是用以下命令下載指定分支(branch)
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
如果 repo沒有找到 branch 參數指出分支版本,就會輸出大量信息,其中有可以下載分支的列表,由於內容過長,請參考http://blog.csdn.net/tonyfield/article/details/9734031
實際操作中,獲得錯誤報告:fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle,
這個地址和你看到的可能不同,但肯定是 ~/bin/repo 第5行或第6行REPO_URL 所表示的網址。
stockoverflow上有貼提及是代理環境變量造成的問題,想到前面嘗試過設置 HTTP_PROXY,用下面的指令清除,HTTPS_PROXY 存在的話也要清除 HTTPS_PROXY。
unset HTTP_PROXY
unset HTTPS_PROXY
然后repo init成功。。。,
提示輸入你的姓名 及 郵件地址,你想要使用Gerrit code-review 工具的話就要用你申請的 Google賬戶使用的郵件地址,沒有的話去申請一個,不用花多少時間。
Your Name [XXXXXX]: XXXXXX
6. repo 信息下載后,用 “repo sync”命令將真正的Android代碼同步到當前工作目錄顯示下載狀態類似下面
tony@tony-E1230:~/android-src-02$ repo sync % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 % Total % Received % Xferd Average Spee d % TiTmote a l T im e %Ti meR eCucrreenitv e d % X f e r d A ve r a g e S p e e Ddlo ad UpTloiadm e T ot al STpienmt e L ef t S peTedi 0C u r 0r e n 0t 0 0 0 0 0 -- :- - :- - -- :- -: -- - -: -- :- - 0 Dload Upload Total Spent Left Speed 100 244 0 244 0 0 1930 0 --:--:-- --:--:-- --:--:-- 3641 100 259 0 259 0 0 1749 0 --:--:-- --:--:-- --:--:-- 2846 100 243 0 243 0 0 1194 0 --:--:-- --:--:-- --:--:-- 1630 后面還有不少。。。。
。。。。2個多小時后。。。。下載完畢, 文件304789項,7.6G,這個數字按下載版本不同應該會有差異,體量上基本就是這樣。