当前位置: 首页 > news >正文

如何在x86_64 Linux上部署Android Cuttlefish模拟器运行环境

0 软硬件环境

  • x86_64服务器
  • Ubuntu24.04 LTS
  • 参考:Cuttlefish 虚拟 Android 设备
  • 参考: 笔记:搭建 Cuttlefish 运行环境

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运行环境

  1. 配置网络(你懂我意思)

  2. 安装依赖包

    sudo apt install -y git devscripts config-package-dev debhelper-compat golang curl f2fs-tools libfdt1
    
  3. 安装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
    
  4. 安装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
    
  5. 下载cuttlefish源码

    git clone https://www.github.com/google/android-cuttlefish.git
    
  6. 设置代理

    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
    
  7. 编译

    for dir in base frontend; do
    cd $dir
    debuild -i -us -uc -b -d
    cd ..
    done
    

    如果编译过程中提示下面的错误
    在这里插入图片描述
    最好在编译前执行一下(此命令会对bazel进行一些必要的配置)

    bazel --version
    
  8. 安装配置

    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
    

相关文章:

  • Spring Cloud Feign 整合 Sentinel 实现服务降级与熔断保护
  • python + opencv实现简单的文字水印
  • 【CSS 行高陷阱:如何避免文本被截断问题】
  • 【RESTful接口设计规范全解析】URL路径设计 + 动词名词区分 + 状态码 + 返回值结构 + 最佳实践 + 新手常见误区汇总
  • Day43 复习日 图像数据集——CNN
  • 数据结构进阶 - 第一章 绪论
  • linux cp与mv那个更可靠
  • 2-深度学习挖短线股-2-训练数据计算
  • Elasticsearch 中的精确搜索与模糊搜索
  • 从手机随拍到标准扫描件:AI如何智能校正证件照片(Python+OpenCV)
  • 机器人系统ROS中包内节点启动详解和实战示例
  • Maven配置本地仓库、中央仓库、公司私有仓库
  • 笔记04:层叠的定义及添加
  • 【机器学习深度学习】线性回归
  • 高中成绩可视化平台开发笔记
  • Jenkins 部署与使用
  • Nordic nRF52832 寄存器级 UARTE 发送实现
  • Python中的多线程与协程:程序、线程、进程之间的关联关系
  • 发布:大彩DN系列3.2寸全视角IPS串口屏发布!
  • MySQL(基础篇)