如何在x86_64 Linux上部署Android Cuttlefish模擬器運行環境

0 軟硬件環境

  • x86_64服務器
  • Ubuntu20.04 LTS
  • 參考:Cuttlefish 虛擬 Android 設備
  • 參考: 筆記:搭建 Cuttlefish 運行環境
  • 可以下載編好的android-cuttlefish:android-cuttlefish.tar.gz

1 系統采用Ubuntu20.04 LTS

2 搭建cuttlefish運行環境

  1. 配置科學的網絡(你懂我意思),然后因為我的bazel版本是8.3,需要再配置文件~/.bazelrc

    build --action_env=HTTP_PROXY=http://127.0.0.1:8118
    build --action_env=HTTPS_PROXY=http://127.0.0.1:8118
    build --remote_timeout=600
    
  2. 安裝依賴包

    sudo apt install -y git devscripts config-package-dev debhelper-compat golang curl f2fs-tools libfdt1 libncurses5 liblzma-dev libopus-dev
    
  3. 安裝bazel

    sudo 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
    
  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 libsrtp2-1 opus-tools
    
  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 倉庫
    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://mirrors.tuna.tsinghua.edu.cn/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
    
  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.pswp.cn/bicheng/86920.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/86920.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/86920.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機器學習9——決策樹

決策樹 Intro 歸納學習(Inductive Learning)的目標:從訓練數據中學習一般規則,應用于未見過的數據。 決策樹是一個樹形結構,其中: 每個分支節點表示一個屬性上的選擇(即決策條件)。…

CppCon 2017 學習:The Asynchronous C++ Parallel Programming Model

清晰理解 Amdahl’s Law(阿姆達爾定律),這是一條描述并行計算加速能力的核心定律。 定義公式: S 1 ( 1 ? P ) P N S \frac{1}{(1 - P) \frac{P}{N}} S(1?P)NP?1? S S S:加速比(Speedup&#xff09…

60頁PPT實戰方案 | 大數據決策分析平臺建設全流程路徑圖

目錄 一、什么是大數據決策分析平臺? 二、為什么要做大數據決策分析平臺建設? 1. 數據已經成為“資源”,但多數組織還停留在“信息孤島” 2. 管理復雜度上升,傳統報表跟不上業務節奏 3. 外部環境不確定性高,倒逼企…

芯谷科技--降壓型DC-DC轉換器D4005

在現代電子設備中,電源管理芯片的性能直接關系到設備的穩定性和效率。D4005以其高效、穩定的性能和廣泛的應用范圍,成為眾多工程師在設計電源方案時的優選。 產品簡介 D4005 是一款高效降壓型 DC-DC 轉換器,具備固定 400KHz 開關頻率&#…

【51單片機節日彩燈控制器設計】2022-6-11

緣由單片機節日彩燈控制器設計-編程語言-CSDN問答 #include "reg52.h" sbit k0P1^2; sbit k1P1^3; sbit k2P1^4; sbit k3P1^5; bit k0,kk0; void main() {unsigned char Xd0;unsigned int ys0; while(1){if(k00&&Xd0){kk0;kP31;while(k00);}if(k10&&…

PyEcharts教程(010):天貓訂單數據可視化項目

文章目錄 1、讀取數據2、數據處理3、重復值查看4、缺失值查看5、PyEcharts可視化5.1 各個省份的訂單量5.2 時間序列分析5.3 每天訂單量統計可視化6、數據下載1、讀取數據 1??讀取數據: import pandas as pd from pyecharts import options as opts from pyecharts.charts …

Redis 持久化之 AOF 策略

1. 什么是 AOF AOF 是 append only file,AOF 文件中記錄了每次的操作指令,在啟動 Redis 時,會將 AOF 文件中的數據讀取出來以恢復數據。 2. 開啟 AOF Redis 默認關閉 AOF,可以通過將 Redis 配置文件中的 appendonly 設置為 ye…

實現OFD轉換PDF文件的實用方法

ODF格式的文件屬于國內新型的文件格式,一般應用在保密等級比較高的系統或者單位中,比如一般政務方面或者法律行業經常會用到這種類型的文件,但是有些時候我們把文件分享給別人的時候別人不一定能打開,這時候就需要把OFD文件轉換成…

JSON + 存儲過程:SaaS 架構下的統一接口與租戶定制之道

在多租戶 SaaS 系統中,不同客戶往往有差異化的業務邏輯、字段要求與流程規則。傳統“統一模型 配置參數”的開發模式,雖然具有可控性,但在高度動態、合作多樣化的場景下,逐漸暴露出擴展困難、上線周期長、定制成本高等問題。 隨…

各種常用的串口助手工具分享

記錄一篇常用串口工具的文章 工具的下載鏈接:https://download.csdn.net/download/m0_59415345/91204823?spm1001.2014.3001.5503 各工具的使用操作說明參考嵌入式hxydj博主的文章:https://blog.csdn.net/qq_20222919/article/details/117038284

AVL樹的簡潔寫法

文章目錄 零、寫在前面一、AVL 樹定義1.1 性質1.2 樹高的證明 二、AVL樹實現(AVL樹實現名次樹)2.1 節點定義2.2 左/右旋轉2.3 zig-zag / zag-zig 雙旋2.4 重平衡函數2.5 插入2.6 刪除2.7 排名查詢2.8 查前驅/后繼2.9 查第 k 小2.10 完整代碼 三、online …

紅外圖像增強(dde):基于“基礎層-細節層”分解的增強算法

1、引言 與可見光圖像相比,紅外熱成像捕捉的是物體表面的溫度分布,其原始數據(通常為12位或14位)包含了極寬的溫度動態范圍。然而,人眼能夠感知的灰度范圍以及顯示設備能夠展示的灰度級(通常為8位&#xf…

Java-day28-其他流

1. 緩沖流 昨天學習了基本的一些流,作為IO流的入門,今天我們要見識一些更強大的流。比如能夠高效讀寫的緩沖流,能夠轉換編碼的轉換流,能夠持久化存儲對象的序列化流等等。這些功能更為強大的流,都是在基本的流對象基礎…

S712001 開放式用戶通信

開放式用戶通信分類 TIA PORTAL 軟件內提供了以下指令: 不帶連接管理的通信指令 “TCON ” :建立以太網連接“TDISCON” :斷開以太網連接“TSEND” :TCP 和 ISO ON TCP 使用的發送數據“TRCV”: TCP 和 ISO ON TCP 使…

CSMatIO庫的安裝與C#實現.mat文件生成

一.CSMatIO介紹 CSMatIO 是一個用于讀寫 MATLAB .mat 文件的開源 C# 庫,它提供了簡單而高效的 API,使 .NET 應用程序能夠與 MATLAB 進行數據交換,支持讀取和寫入 MATLAB 的 .mat 文件(版本 5 和 7.3),兼容…

設計一個interface (一)

好的,我來舉一個具體的例子,幫助你理解 interface、element、resource 和 architecture 之間的關系。 場景:設計一個用戶管理系統的接口 背景 假設我們正在設計一個用戶管理系統,系統中有兩個主要的模塊: 用戶服務模…

tomcat下載安裝

目錄 一.tomact簡介 二.詳細步驟 三.下載頁面詳解(選看) 一.tomact簡介 Tomcat是Apache軟件基金會下的一個核心項目,它是一個開源的Java Servlet和JSP容器。由Apache、Sun等公司及個人共同開發,由于Sun的參與,最新的…

Axure版AntDesign 元件庫-免費版

AntDesign 元件庫概述 一、AntDesign 元件庫概述 添加圖片注釋,不超過 140 字(可選) AntDesign 是螞蟻集團推出的企業級設計體系,在 Axure 中使用 AntDesign 元件庫,可幫助設計師快速搭建符合現代企業級產品標準的高…

MySQL鎖機制全解析

MYSQL存儲引擎支持的鎖 InnoDB支持行級鎖(row-level locking)和表級鎖,默認為行級鎖。MyISAM采用表級鎖(table-level locking) 鎖的基本分類 1. 按照鎖的使用方式 , Mysql的鎖大致分為共享鎖和排它鎖 a. 共享鎖(S) 共享鎖,Share lock,又稱為讀鎖&am…

圖解Git中Rebase與Merge的區別

文章目錄 前言理解基本概念🔀 Git Merge:合并分支🔄 Git Rebase:重寫歷史 可視化理解工作流程實際應用場景與示例場景1:團隊協作 - 使用Merge場景2:個人分支整理 - 使用Rebase沖突解決:兩種策略…