Android 原始碼樹位於 Google 託管的 Git 儲存庫中。 Git 儲存庫包含 Android 原始碼的元數據,包括對原始程式碼的變更以及更改的時間。本頁介紹如何下載特定 Android 程式碼行的原始碼樹。
若要從特定裝置的工廠映像開始而不是下載來源,請參閱選擇裝置版本。
初始化 Repo 客戶端
安裝 Repo Launcher後,設定您的用戶端以存取 Android 來源儲存庫:
建立一個空目錄來儲存您的工作文件。給它任何你喜歡的名字:
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
使用您的真實姓名和電子郵件地址來設定 Git。要使用 Gerrit 程式碼審查工具,您需要一個與註冊的 Google 帳戶關聯的電子郵件地址。確保這是您可以接收訊息的即時位址。您在此處提供的名稱會顯示在您提交的程式碼的屬性中。
git config --global user.name Your Name
git config --global user.email you@example.com
運行
repo init
以獲得最新版本的 Repo 及其最新的錯誤修復。您必須指定清單的 URL,該 URL 指定 Android 原始程式碼中包含的各種儲存庫在工作目錄中的放置位置。repo init -u https://android.googlesource.com/platform/manifest
要檢查主分支:
repo init -u https://android.googlesource.com/platform/manifest -b main
若要檢查main 以外的分支,請使用
-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 或更高版本,您可以在執行
repo init
時指定--partial-clone
。這利用了 Git 的部分克隆功能,僅在需要時下載 Git 對象,而不是下載所有內容。因為使用部分克隆意味著許多操作必須與伺服器通信,所以如果您是開發人員並且使用低延遲網絡,請使用以下內容:repo init -u https://android.googlesource.com/platform/manifest -b main --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
(安靜)標誌。有關所有選項,請參閱Repo 命令參考。
使用身份驗證
預設情況下,對 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 用戶端會遇到連線問題,在下載過程中陷入困境(通常是在接收物件期間)。調整 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/main
cd /usr/local/aosp/main
repo init -u /usr/local/aosp/mirror/platform/manifest.git
repo sync
最後,要將客戶端與伺服器同步,請先將鏡像與伺服器同步,然後將客戶端與鏡像同步:
cd /usr/local/aosp/mirror
repo sync
cd /usr/local/aosp/main
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 不能僅從純原始程式碼中使用,並且需要額外的與硬體相關的專有程式庫才能運行,例如用於硬體圖形加速。有關下載鏈接,請參閱以下部分;有關其他資源,請參閱設備二進位。
下載專有二進位文件
您可以從Google 驅動程式下載執行標記為 AOSP 版本分支的受支援裝置的官方二進位檔案。這些二進位檔案透過非開源程式碼添加了對其他硬體功能的存取。若要建置 AOSP 主分支,請使用二進位預覽。為裝置建立主分支時,請使用最新編號版本或最新日期的二進位。
提取專有二進位文件
每組二進位檔案都是壓縮存檔中的自解壓縮腳本。解壓縮每個存檔,從來源樹的根執行包含的自解壓縮腳本,然後確認您同意隨附的授權協議的條款。二進位檔案及其相符的 makefile 安裝在來源樹的vendor/
層次結構中。
清理
為了確保在提取後正確考慮新安裝的二進位文件,請使用以下命令刪除任何先前建置的現有輸出:
make clobber