下載源碼

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

要開始使用特定設備,而不是下載源出廠映像,請參閱選擇設備構建

初始化 Repo 客戶端

安裝回購啟動,建立你的客戶端來訪問Android的源代碼庫:

  1. 創建一個空目錄來保存您的工作文件。給它任何你喜歡的名字:

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
    
  2. 使用您的真實姓名和電子郵件地址配置 Git。要使用格里特代碼審查工具,你需要一個與所連接的電子郵件地址註冊谷歌帳號。確保這是一個可以接收消息的實時地址。您在此處提供的名稱顯示在您提交的代碼的屬性中。

    git config --global user.name Your Name
    git config --global user.email you@example.com
    
  3. repo init ,以獲得最新版本的回購,其最新的錯誤修正。您必須為清單指定一個 URL,它指定 Android 源中包含的各種存儲庫在您的工作目錄中的放置位置。

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

    要檢查主分支:

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

    要檢查出比其他高手一分支,與指定它-b 。對於分支的列表,請參閱源代碼標籤和建立

    對於 Python 2

    對於 Python 3

    如果你得到一個“ /usr/bin/env 'python' no such file or directory ”錯誤消息,下面的解決方案使用一個:

    如果你的Ubuntu 20.04.2 LTS是新安裝(與升級)Linux版本的:

    sudo ln -s /usr/bin/python3 /usr/bin/python

    如果使用Git版本2.19或更高版本,可以指定--partial- clone表演時repo init 。這使得使用Git的的部分克隆能力在需要的時候只下載,而不是下載的一切Git對象。因為使用部分克隆意味著許多操作必須與服務器通信,如果您是開發人員並且您使用的是低延遲網絡,請使用以下內容:

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

    僅限Windows操作系統:如果你得到一個錯誤消息,指出符號鏈接無法創建,導致repo init失敗,引用GitHub的符號鏈接文件創建這些,或使他們的支持。對於非管理員,請參閱允許非管理員創建符號鏈接部分。

成功的初始化以一條消息結束,指出 Repo 已在您的工作目錄中初始化。您的客戶端目錄現在包含一個.repo其中的文件,如清單保存目錄。

下載 Android 源代碼樹

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

repo sync

要速度同步,通過-c (當前分支)和-j threadcount標誌:

repo sync -c -j8

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

為了抑制輸出,通過-q (安靜)標誌。見回購命令參考所有選項。

使用身份驗證

默認情況下,對 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

排除網絡問題

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

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 。首先,創建並同步鏡像本身。注意--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

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

獲取專有二進製文件

AOSP 不能僅從純源代碼中使用,並且需要額外的與硬件相關的專有庫才能運行,例如用於硬件圖形加速。請參閱下文中的下載鏈接和設備的二進制文件的額外資源。

下載專有二進製文件

你可以下載官方的二進制文件運行從標籤AOSP版本分支機構支持的設備谷歌的驅動程序。這些二進製文件通過非開源代碼添加了對其他硬件功能的訪問。要構建AOSP主分支,使用二進制文件預覽來代替。在構建主分支的設備,使用二進制文件的最新版本編號或與最近的日期。

提取專有二進製文件

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

清理

為確保在解壓後正確考慮新安裝的二進製文件,請使用以下命令刪除任何先前構建的現有輸出:

make clobber