Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

下載源

Android源代碼樹位於Google託管的Git存儲庫中。 Git存儲庫包含Android源的元數據,包括對源的更改以及更改的時間。本頁介紹如何下載特定Android代碼行的源代碼樹。

要從特定設備的出廠映像開始而不是下載源代碼,請參閱選擇設備內部版本

初始化回購客戶端

安裝Repo Launcher之後,設置您的客戶端以訪問Android源存儲庫:

  1. 創建一個空目錄來保存您的工作文件。如果您使用的是macOS,則必須位於區分大小寫的文件系統上。給它一個你喜歡的名字:

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
    
  2. 使用您的真實姓名和電子郵件地址配置Git。要使用Gerrit代碼審核工具,您需要一個與註冊的Google帳戶關聯的電子郵件地址。確保這是一個實時地址,您可以在其中接收消息。您在此處提供的名稱將顯示在提交代碼的屬性中。

    git config --global user.name "Your Name"
    git config --global user.email "you@example.com"
    
  3. 運行repo init以獲取具有最新錯誤修復的最新版本的Repo。您必須為清單指定一個URL,該URL指定Android源中包含的各種存儲庫在工作目錄中的放置位置。

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

    注意:如果由於證書錯誤導致macOS上的repo init失敗,則可能需要先運行:

    # macOS only
    open /Applications/Python\ 3.6/Install\ Certificates.command
    

    要檢出master以外的其他分支,請使用-b指定它。有關分支的列表,請參見源代碼標籤和構建

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

如果使用Git 2.19或更高版本,則可以在執行repo init時指定--partial-clone ,這將利用Git的部分克隆功能,該功能僅在需要時下載Git對象,而不下載所有內容。因為使用部分克隆意味著許多操作需要與服務器通信,所以建議使用低延遲網絡的開發人員這樣做:

repo init -u https://android.googlesource.com/platform/manifest -b master --partial-clone --clone-filter=blob:limit=10M

成功的初始化以一條消息結尾,該消息表明Repo已在您的工作目錄中初始化。您的客戶端目錄現在應該包含一個.repo目錄,其中包含清單等文件。

下載Android源代碼樹

要將默認清單中指定的Android源樹從存儲庫下載到您的工作目錄,請運行:

repo sync

為了加快同步速度,請傳遞-c (當前分支)和-j threadcount標誌:

repo sync -c -j8

Android源文件在其項目名稱下下載到您的工作目錄中。

要抑制輸出,請傳遞-q (安靜)標誌。有關所有選項,請參見《 Repo命令參考》。

使用認證

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

與其他用戶共享IP地址時(例如,當從NAT防火牆之外訪問源存儲庫時),即使對於常規使用模式,配額也會觸發(例如,如果許多用戶從同一IP地址中的同一IP地址同步新客戶端)短期內)。

在這種情況下,您可以使用經過身份驗證的訪問,然後為每個用戶使用單獨的配額,而不管IP地址如何。

第一步是使用密碼生成器創建密碼,並按照密碼生成器頁面上的說明進行操作。

第二步是使用清單URI https://android.googlesource.com/a/platform/manifest強制進行身份驗證訪問。注意/a/目錄前綴如何觸發強制認證。您可以使用以下命令將現有客戶端轉換為使用強制身份驗證:

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

解決網絡問題

從代理後面下載時(在某些公司環境中很常見),您可能需要明確指定回購所使用的代理:

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客戶端遇到連接問題,陷入下載的中間(通常是在接收對象期間)。據報導,調整TCP / IP堆棧的設置並使用非並行命令可以改善這種情況。您需要root訪問權限才能修改TCP設置:

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

使用本地鏡像

當使用多個客戶端時,尤其是在帶寬不足的情況下,最好創建整個服務器內容的本地鏡像,並從該鏡像同步客戶端(不需要網絡訪問)。全鏡像的下載量小於兩個客戶端的下載量,同時包含更多信息。

這些說明假定在/usr/local/aosp/mirror創建了/usr/local/aosp/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

鏡像同步後,可以從中創建新客戶端。請注意,指定絕對路徑很重要:

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

可以將鏡像存儲在LAN服務器上,並通過NFS,SSH或Git訪問它。也可以將其存儲在可移動驅動器上,並在用戶或計算機之間傳遞該驅動器。

驗證Git標籤

將以下公共密鑰加載到您的GnuPG密鑰數據庫中。該密鑰用於對錶示發行版的帶註釋的標籤進行簽名。

gpg --import

複製並粘貼下面的鍵,然後鍵入EOFCtrl-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

獲取專有二進製文件

AOSP不能僅從純源代碼使用,並且需要運行其他與硬件相關的專有庫,例如用於硬件圖形加速。有關下載鏈接,請參見以下各節;有關其他資源,請參見設備二進製文件

下載專有二進製文件

您可以從Google驅動程序中下載運行帶有標記的AOSP版本分支的受支持設備的官方二進製文件。這些二進製文件使用非開放源代碼添加對其他硬件功能的訪問。要構建AOSP主分支,請改用Binaries Preview 。為設備構建master分支時,請使用最新編號的發行版或最新日期的二進製文件。

提取專有二進製文件

每組二進製文件都以自解壓縮腳本的形式出現在壓縮存檔中。解壓縮每個存檔,從源樹的根目錄運行包含的自解壓縮腳本,然後確認您同意隨附許可協議的條款。二進製文件及其匹配的makefile文件將安裝在源樹的vendor/層次結構中。

清理

為了確保在提取新安裝的二進製文件後正確考慮它們,請使用以下命令刪除任何先前版本的現有輸出:

make clobber