【AOSP】解决repo拉取提示无法连接android.googlesource.com

问题描述

众所周知安卓是谷歌生的,但国内不能直接连谷歌,所以拉取AOSP的时候只能要么开魔法要么从镜像站拉。由于绝大多数魔法都是流量计费制,而AOSP仓库非常大,开魔法很贵,所以通常推荐使用镜像站拉取。本文针对的是镜像站拉取的情况。

报错内容

从镜像站拉取源码,repo sync有时会提示 \ncurl: (28) Failed to connect to android.googlesource.com port 443 after 136483 ms: Couldn't connect to server\n

这是因为在repo sync的过程中拉取了一些子仓库,而这些子仓库的manifest里指向的仓库地址还是谷歌的源,所以需要手动改成镜像站的地址。

解决办法

首先从镜像站init

ruby 复制代码
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

然后执行repo sync,注意清华镜像站不要开太多线程,不然可能被镜像站ban,推荐-j4就可以了

bash 复制代码
repo sync -j4

直到报错提示Failed to connect to android.googlesource.com的时候,按Ctrl + C取消sync操作,可能需要多按几次才停得下来。

然后在项目在根目录,和.repo目录同级的位置,创建一个文件

bash 复制代码
touch fix.sh

把这段内容粘贴进去

bash 复制代码
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

保存,然后给权限,运行

bash 复制代码
chmod 777 fix.sh
./fix.sh

如果没有报错就是成功了。然后重新repo sync,刚才报错的仓库就可以正常同步下来了,但之后可能还会报错,这是因为子仓库会随着sync的过程不断被down下来,新down下来的仓库指向的还是谷歌的url,这时候就再取消sync,重新执行sh脚本即可。

注意执行sh脚本的时候要在.repo目录所在的目录下执行。例如:

我的项目在~/AOSP
.repo目录在~/AOSP/.repo

那么就要执行

bash 复制代码
cd ~/AOSP
./fix.sh

不要直接执行

javascript 复制代码
~/AOSP/fix.sh

因为脚本里面写的是相对路径,直接这样执行会找不到.repo目录。

常见问题

如果脚本执行的时候报错了说找不到文件或找不到目录,说明你的.repo目录里面的内容有问题,一般是由于repo sync在一开始就报错了,或者压根没有执行过repo sync,亦或者你有多个.repo目录,互相冲突了。init的时候注意看控制台信息提示你当前使用的是哪个.repo目录,最好不要同时存在多个.repo目录,会发生各种奇奇怪怪的事,如果已经有了多个.repo目录最好统统删掉重新init

相关推荐
千里马学框架1 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台1 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone1 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc1 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo1 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077001 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼1 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
AFinalStone1 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen1 天前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone1 天前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui