源同步問題

即使我們盡心盡力,有時也會出現小問題。本頁詳細介紹了您在嘗試同步 Android 源代碼時可能遇到的一些已知問題。

同步源代碼的困難(代理問題)

症狀: repo initrepo sync失敗並出現 HTTP 錯誤,通常為 403 或 500。

原因:有幾個可能的原因,通常與 HTTP 代理有關,它們很難處理大量傳輸的數據。

修復:雖然沒有通用解決方案,但使用 Python 2.7 並明確使用repo sync -j1有時會有所幫助。

同步源樹的困難(DNS 問題)

症狀:運行repo sync時,進程失敗,並出現與無法識別主機名相關的各種錯誤。一個這樣的錯誤是<urlopen error [Errno -2] Name or service not known>

原因:一些 DNS 系統很難處理同步源樹所涉及的大量查詢(在最壞的情況下可能有數百個請求)。

修復:手動解析相關主機名,並在本地對這些結果進行硬編碼。

您可以使用nslookup命令解決它們,該命令為每個主機名提供一個數字 IP 地址(通常在輸出的“地址”部分)。

nslookup googlesource.com
nslookup android.googlesource.com

然後,您可以通過編輯/etc/hosts在本地對它們進行硬編碼,並在該文件中添加兩行,格式如下:

aaa.bbb.ccc.ddd googlesource.com
eee.fff.ggg.hhh android.googlesource.com

同步源樹的困難(TCP 問題)

症狀: repo sync在同步時掛起,通常是在完成 99% 的同步時。

原因: TCP/IP 堆棧中的某些設置在某些網絡環境中造成困難,因此repo sync既沒有完成也沒有失敗。

修復:在 Linux 上,輸入命令:

sysctl -w net.ipv4.tcp_window_scaling=0

在 macOS 上,在網絡設置中禁用 rfc1323 擴展。