如何在x86_64 Linux上部署Android Cuttlefish模拟器运行环境
0 软硬件环境
- x86_64服务器
- Ubuntu24.04 LTS
- 参考:Cuttlefish 虚拟 Android 设备
- 参考: 笔记:搭建 Cuttlefish 运行环境
- 可以下载编好的android-cuttlefish:android-cuttlefish.tar.gz
1 将系统升级至Ubuntu24.04 LTS
这一步很关键,因为我一开始一直在Ubuntu20.04 LTS上配置环境,配置cuttlefish环境总是有各种依赖库的问题。所以更新到了24.04。
如果你的系统是20.04,可通过下面命令将系统升级至24.04
sudo apt update && sudo apt upgrade -y
#检查是否有官方推送的升级
sudo do-release-upgrade -c
#升级系统版本
sudo do-release-upgrade
2 搭建cuttlefish运行环境
-
配置网络(你懂我意思)
-
安装依赖包
sudo apt install -y git devscripts config-package-dev debhelper-compat golang curl f2fs-tools libfdt1
-
安装bazel
npm install -g @bazel/bazelisk sudo wget https://github.com/bazelbuild/bazelisk/releases/download/v1.18.0/bazelisk-linux-amd64 -O /usr/local/bin/bazel sudo chmod +x /usr/local/bin/bazel
或者
# 添加 Bazel 仓库 sudo apt install apt-transport-https curl gnupg curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg sudo mv bazel.gpg /etc/apt/trusted.gpg.d/ echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list # 安装 Bazel sudo apt update && sudo apt install bazel # 查看bazel安装是否完成 bazel --version
-
安装android依赖的软件包
sudo apt install meson protobuf-compiler libfmt-dev libgoogle-glog-dev libjsoncpp-dev cmake pkg-config libcurl4-openssl-dev libxml2-dev libssl-dev openssl uuid-dev uuid libgtest-dev util-linux net-tools ebtables libarchive-tools libz3-4 grub-efi-ia32-bin openssh-server bridge-utils
-
下载cuttlefish源码
git clone https://www.github.com/google/android-cuttlefish.git
-
设置代理
go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct
diff --git a/frontend/src/goutil b/frontend/src/goutil index 449ccab..03e7cd8 100755 --- a/frontend/src/goutil +++ b/frontend/src/goutil @@ -24,7 +24,9 @@ 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 - export GOPROXY="proxy.golang.org|proxy.golang.org|direct" + #export GOPROXY="proxy.golang.org|proxy.golang.org|direct" + go env -w GO111MODULE=on + go env -w GOPROXY=https://goproxy.cn,direct fi
-
编译
for dir in base frontend; do cd $dir debuild -i -us -uc -b -d cd .. done
如果编译过程中提示下面的错误
最好在编译前执行一下(此命令会对bazel进行一些必要的配置)bazel --version
-
安装配置
sudo dpkg -i ./cuttlefish-base_*_*64.deb || sudo apt-get install -f sudo dpkg -i ./cuttlefish-user_*_*64.deb || sudo apt-get install -f sudo usermod -aG kvm,cvdnetwork,render $USER sudo reboot