Cuttlefish搭建
具体过程可见 *https://github.com/google/android-cuttlefish/tree/main 和 https://source.android.com/docs/setup/create/cuttlefish
go build问题
-
go version
常见的问题是在Ubuntu20.04中,默认的golang版本为1.13。Cuttlefish的要求为1.15及以上。因此- 如果已安装默认的golang,需要将其移除并安装较新的版本
- 如果未安装,则可以通过更新软件源等方式,获取新版本的golang并安装
-
go build timeout
这一问题主要是在国内环境出现,原因是 frontend/src 中的goutil文件设置了GOPROXY,国内无法直连。
笔者的解决方法如下:if [[ "$version" > "1.15" ]]; then # Temporary solution until # https://github.com/golang/go/issues/28194 is fixed # in order to retry failed fetch requests. # GOPROXY fallback was added in Go 1.15 go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct # export GOPROXY="proxy.golang.org|proxy.golang.org|direct" fi
将原有的链接替换为国内可用的代理,这一改动无论是使用本地构建还是docker构建都十分有用。
apt-get update速度慢(Docker构建方法)
这一问题的原因主要镜像内没有添加国内的镜像源,解决方案如下:
- 打开docker文件夹
cd android-cuttlefish/docker
- 修改文件夹下的Dockerfile
sudo gedit Dockerfile
将要换的镜像源插入 RUN set -x 后,结果如下:
RUN set -x
RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
# 这里的镜像源笔者采用ustc的,也可换成其他的国内源
RUN apt-get update \
... # 后续省略
Cuttlefish运行
运行过程中,笔者遇到的主要是网络的配置问题,即cvd虚拟机中网络无法联网。这一问题在各个论坛都没有找到合适的答案(大多是针对avd的网络配置问题),因此在找到解决方案后特此记录一下,以备不时之需。
virtwifi无法联网
这应该是最主要的问题,进入虚拟机后发现网络无法连接,即便打开wifi也会显示no internet access. 打开某些网站还会显示cannot solve nameserver
主要原因是自动配置的ip、netmask和dns都与宿主机不同,导致cvd无法连接宿主机的网络,无法解析域名。解决方法如下:
- 打开cvd的wifi后,选择virtwifi(或virtwifi2)
- 点击右上角的修改标识(一支铅笔)
- 在其中将配置模式从DHCP改为static
- 将ip改为之前系统自动配置的ip(192.168.x.x)
- gateway改为宿主机的ip(重要!!)
- 将dns改为宿主机的dns,或公共dns(阿里、腾讯等)
- 修改后确认保存,然后划出状态栏,会有提示”wifi无网络,是否仍要连接“,选择是且不再提醒
以上步骤可以解决笔者的网络问题,完成后virtwifi会先提示limited internet access,随后叹号消失,可以上网
如果未能解决你的问题,可以将第五步的gateway修改为第四步修改ip的默认网关,即192.168.x.1
virtwifi频繁断连
这一问题可能是因为区域的问题导致的,笔者未能找到准确的原因,在配置过程中也未能复现。
在第一次遇到该问题时,笔者通过修改cvd中的时间和地域解决了该问题,但不能确保是正确的方法,就当是玄学吧
一点吐槽
这cuttlefish说是谷歌都在用,但是一看教程没有多少,论坛中的讨论也不多,搭建过程还遇到了许多奇怪的问题,笔者实在是心力交粹,希望有遇到相关问题的人多多指教!