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

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

  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
    
http://www.lqws.cn/news/537877.html

相关文章:

  • MySQL事物隔离级别详解
  • 笔记04:层叠的定义及添加
  • 链表基本功(相交链表)
  • Ubuntu通过防火墙管控Docker容器
  • Go语言与云原生:Kubernetes Operator开发全流程
  • Selenium+Pytest自动化测试框架实战
  • 第十二章:温度传感器拓展模块
  • 《汇编语言:基于X86处理器》第5章 过程(1)
  • LeetCode 2311.小于等于 K 的最长二进制子序列:贪心(先选0再选1)-好像还是比灵神写的清晰些
  • Python打卡:Day36
  • 永磁无刷电机旋转原理
  • 数据结构进阶 第六章 树与二叉树
  • 15.三数之和
  • 教程 | 一键批量下载 Dify「Markdown 转 Docx」生成的 Word 文件(附源码)
  • GraphQL注入 -- GPN CTF 2025 Real Christmas
  • Spring Boot高并发 锁的使用方法
  • 与 AI 聊天更顺畅:cat_code.py
  • [深度学习][python]yolov13+bytetrack+pyqt5实现目标追踪
  • 数据结构进阶 - 第九章 排序
  • Docker安装Mysql、配置文件挂载、修改Mysql编码
  • C2远控篇CC++SC转换格式UUID标识MAC物理IPV4地址减少熵值
  • 什么是谓词下推?
  • leetcode:50. Pow(x, n)(python3解法,数学相关算法题)
  • 苍穹外卖day3--公共字段填充+新增菜品
  • 桌面小屏幕实战课程:DesktopScreen 11 SPI 水墨屏
  • 超声波清洗机相对于传统清洗方法有哪些优势?
  • 博客系统测试报告
  • 互联网大厂Java求职面试:RAG系统架构设计与实战
  • 通达信 股道主力资金 幅图分析系统
  • 攻防世界-MISC-4-2