【AOSP】解決repo拉取提示無(wú)法連接android.googlesource.com

問(wèn)題描述

眾所周知安卓是谷歌生的,但國(guó)內(nèi)不能直接連谷歌,所以拉取AOSP的時(shí)候只能要么開(kāi)魔法要么從鏡像站拉。由于絕大多數(shù)魔法都是流量計(jì)費(fèi)制,而AOSP倉(cāng)庫(kù)非常大,開(kāi)魔法很貴,所以通常推薦使用鏡像站拉取。本文針對(duì)的是鏡像站拉取的情況。

報(bào)錯(cuò)內(nèi)容

從鏡像站拉取源碼,repo sync有時(shí)會(huì)提示 \ncurl: (28) Failed to connect to android.googlesource.com port 443 after 136483 ms: Couldn't connect to server\n
這是因?yàn)樵趓epo sync的過(guò)程中拉取了一些子倉(cāng)庫(kù),而這些子倉(cāng)庫(kù)的manifest里指向的倉(cāng)庫(kù)地址還是谷歌的源,所以需要手動(dòng)改成鏡像站的地址。

解決辦法

首先從鏡像站init

export REPO_URL=https://mirrors.tuna.tsinghua.edu.cn/help/git-repo
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-11.0.0_r27

然后執(zhí)行repo sync,注意清華鏡像站不要開(kāi)太多線(xiàn)程,不然可能被鏡像站ban,推薦-j4就可以了

repo sync -j4

直到報(bào)錯(cuò)提示Failed to connect to android.googlesource.com的時(shí)候,按Ctrl + C取消sync操作,可能需要多按幾次才停得下來(lái)。
然后在項(xiàng)目在根目錄,和.repo目錄同級(jí)的位置,創(chuàng)建一個(gè)文件

touch fix.sh

把這段內(nèi)容粘貼進(jìn)去

find .repo/projects -name config | while read config; do
    sed -i 's#https://android.googlesource.com/#https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/#g' "$config"
done

保存,然后給權(quán)限,運(yùn)行

chmod 777 fix.sh
./fix.sh

如果沒(méi)有報(bào)錯(cuò)就是成功了。然后重新repo sync,剛才報(bào)錯(cuò)的倉(cāng)庫(kù)就可以正常同步下來(lái)了,但之后可能還會(huì)報(bào)錯(cuò),這是因?yàn)樽觽}(cāng)庫(kù)會(huì)隨著sync的過(guò)程不斷被down下來(lái),新down下來(lái)的倉(cāng)庫(kù)指向的還是谷歌的url,這時(shí)候就再取消sync,重新執(zhí)行sh腳本即可。
注意執(zhí)行sh腳本的時(shí)候要在.repo目錄所在的目錄下執(zhí)行。例如:
我的項(xiàng)目在~/AOSP
.repo目錄在~/AOSP/.repo
那么就要執(zhí)行

cd ~/AOSP
./fix.sh

不要直接執(zhí)行

~/AOSP/fix.sh

因?yàn)槟_本里面寫(xiě)的是相對(duì)路徑,直接這樣執(zhí)行會(huì)找不到.repo目錄。

常見(jiàn)問(wèn)題

如果腳本執(zhí)行的時(shí)候報(bào)錯(cuò)了說(shuō)找不到文件或找不到目錄,說(shuō)明你的.repo目錄里面的內(nèi)容有問(wèn)題,一般是由于repo sync在一開(kāi)始就報(bào)錯(cuò)了,或者壓根沒(méi)有執(zhí)行過(guò)repo sync,亦或者你有多個(gè).repo目錄,互相沖突了。init的時(shí)候注意看控制臺(tái)信息提示你當(dāng)前使用的是哪個(gè).repo目錄,最好不要同時(shí)存在多個(gè).repo目錄,會(huì)發(fā)生各種奇奇怪怪的事,如果已經(jīng)有了多個(gè).repo目錄最好統(tǒng)統(tǒng)刪掉重新init。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容