下載構建android源碼-下載源碼

原文鏈接:http://source.android.com/source/downloading.html

Android源碼樹位於谷歌名下的Git倉庫中,本文講述如何下載指定版本的android源碼樹。

一、安裝Repo

Repo是一個方便的從Git下載Android源碼樹的工具。關於這個工具的更多介紹可參考Developing小節。

        Repo安裝步驟:

1、在你的工作目錄下創建一個bin目錄      

$ mkdir ~/bin
$ PATH=~/bin:$PATH
        2、下載Repo工具,並給與可執行權限

$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo


二、初始化一個Repo客戶端

安裝完repo後,需要設置本地客戶端可以訪問android的源碼庫。

1、創建一個空目錄用來存放你的文件。如果你使用的是MAC os,它的文件系統是大小寫敏感的,你可以像下面一樣指定目錄名稱:

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

2、運行repo init來獲得Repo的最新版本。你必須指定一個清單的URL,這個清單指定了android源碼中不同的庫在你的工作目錄中存放的位置。

$ repo init -u https://android.googlesource.com/platform/manifest

如果想要獲取分支版本的源碼,需要指定參數-b。可以在Source Code Tags and Builds中看到分支的列表

$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

3、當提交代碼時,需要使用你真實的姓名和郵箱地址來配置Repo。爲了使用Gerrit 代碼評審工具,你需要一個註冊了google賬戶的郵箱地址,這個郵箱用來接受消息。你的代碼提交時顯示的名稱就是你提供的名字。

當收到了返回的初始化Repo成功的消息時,初始化纔算真正完成。初始化完成後,將會有一個.repo的文件夾出現,這個文件夾用來存儲譬如清單等文件。

二、下載Android源碼樹

運行下面的命令可以把你指定的Android源碼樹下載到你的工作目錄中。

$ repo sync
在工作目錄中,android源碼文件是按照工程名稱來存放的,sync操作將持續一個或者多個小時。關於repo的更多信息可以查看Developing小節。

三、使用認證

默認情況下,獲得了Android源代碼是匿名的。爲了防止過度使用的服務器,每個服務器的IP地址與一個配額關聯。

當與其他用戶共享IP地址時(例如,當繞過一個NAT 防火牆訪問源碼庫時)配額甚至可以定期使用模式觸發(例如,當許多用戶在一個很短的期間內使用同一個IP地址來同步新客戶端時)

在這種情況下,有可能使用認證訪問,然後爲每個用戶使用單獨的配額,而不管IP地址。

第一步是使用密碼生成器來創建一個密碼,可以參考指導頁面。

第二步驟是爲了迫使認證訪問,通過使用下面的清單的URI:

https://android.googlesource.com/a/platform/manifest

請注意如何/a/目錄前綴觸發強制認證。您可以使用下面的命令將現有的客戶端使用強制認證:

$ repo init -u https://android.googlesource.com/a/platform/manifest

四、解決網絡問題

當使用一個代理下載時(這個在一些公司環境中很常見),顯示的指定repo使用的代理很重要:

$ export HTTP_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>
$ export HTTPS_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>

Linux客戶端遇到鏈接問題的情況比較少見,一般是卡在下載中間(通常是在“Receiving objects”中)。據說調整tcp\ip棧的設置和使用非並行命令可以改善這個情況。你需要root權限才能修改tcp設置:

$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1

五、使用本地鏡像

當使用多個客戶端時,特別是在帶寬有限的情況下,爲整個服務器的內容創建一個本地鏡像,然後再從該鏡像同步到客戶端(不需要網絡),這會是一個比較好的辦法。下載一個完整的鏡像比下載兩個客戶端要小,同時可以包含更多的信息。

下面的命令假設了鏡像被創建在/usr/local/aosp/mirror。第一步先創建和同步mirror。注意--mirror標誌,只有在創建一個新客戶端時才能指定這個標誌:

$ mkdir -p /usr/local/aosp/mirror
$ cd /usr/local/aosp/mirror
$ repo init -u https://android.googlesource.com/mirror/manifest --mirror
$ repo sync

一旦mirror被同步下來,新的客戶端可以從它創建。注意指定一個絕對路徑很重要:

$ mkdir -p /usr/local/aosp/master
$ cd /usr/local/aosp/master
$ repo init -u /usr/local/aosp/mirror/platform/manifest.git
$ repo sync

最後,從服務器同步到客戶端的步驟就分爲了兩步:先從服務器同步到鏡像,再從鏡像同步到客戶端:

$ cd /usr/local/aosp/mirror
$ repo sync
$ cd /usr/local/aosp/master
$ repo sync

把鏡像存儲在局域網服務器,然後通過NFS、ssh或者git訪問,這是一種方案,另一種方案是:將鏡像存在一個移動硬盤上,然後在多用戶或多機器間使用該移動硬盤。

六、驗證GIT標籤

加載以下的公鑰到您的GnuPG密鑰數據庫。該公鑰是用來簽署代表發佈的註釋標籤。

$ gpg --import
拷貝並粘貼下面的公鑰,然後輸入EOF(Ctrl -D)來結束輸入,然後處理公鑰。
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)

mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----
導入公鑰後,可以使用下面的命令驗證:

$ git tag -v TAG_NAME

如果你沒有設置cache,現在是一個好時機來完成它。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章