Docker-Android安卓模擬器本地部署并實現遠程開發測試

文章目錄

    • 1. 虛擬化環境檢查
    • 2. Android 模擬器部署
    • 3. Ubuntu安裝Cpolar
    • 4. 配置公網地址
    • 5. 遠程訪問
        • 小結
    • 6. 固定Cpolar公網地址
    • 7. 固定地址訪問

本文主要介紹如何在Ubuntu系統使用Docker部署docker-android安卓模擬器,并結合cpolar內網穿透工具實現公網遠程訪問本地部署的Android開發環境。

隨著移動互聯網的飛速發展,Android應用開發日益成為業界關注的焦點。在開發過程中,對Android應用的測試和部署至關重要,這關系到應用能否在各種設備和環境下穩定運行。然而,傳統的Android開發和測試環境搭建過程繁瑣,且不易于管理和維護。為了解決這一問題,Docker-Android 應運而生,它將完整的Android開發環境封裝在Docker容器中,大大簡化了開發和部署流程。

Docker-Android 通過容器化技術,使得開發者可以在本地或遠程服務器上輕松構建和運行Android模擬器。這種輕量級的部署方式不僅降低了資源占用,還提高了開發和測試的效率。更重要的是,Docker-Android 提供了靈活的配置選項,可以根據項目需求進行定制化設置,滿足不同的開發和測試需求。

然而,對于需要遠程訪問Android開發環境的開發者來說,僅僅依靠Docker-Android 還不足以實現這一目標。此時,我們需要借助cpolar這樣的內網穿透工具,將本地的Docker-Android 環境暴露到公網上,實現遠程訪問。cpolar 通過在本地和公網之間建立安全的隧道連接,使得遠程用戶可以通過公網地址訪問到本地的Docker-Android 環境。

結合Docker-Android 和cpolar,我們可以實現一個高效、靈活且安全的遠程Android開發環境。這不僅方便了開發者的遠程協作和項目管理,還提高了開發和測試的效率。本文旨在介紹如何使用Docker-Android 和cpolar 在本地部署并實現遠程訪問Android開發環境,為開發者提供一個更加便捷和高效的解決方案。

根據官方說法,盡量采用ubuntu系統進行安裝,采用Docker部署,首先設備需要提前安裝好Docker,如沒有安裝,可以參考Docker 官方教程進行安裝:Docker 官方安裝教程.

1. 虛擬化環境檢查

執行下面命令安裝檢查工具

sudo apt install cpu-checker

然后執行下面命令檢查是否支持虛擬化

kvm-ok

提示下面信息表示正常支持虛擬化環境,如果不是出現如下信息,需要檢查設備開啟虛擬化支持,然后再進行下面進行android 模擬器部署

image-20240410142131130

2. Android 模擬器部署

本文采用docker方式部署,首先拉取一個鏡像,官方提供很多種安卓版本,具體可以訪問Github查看:https://github.com/budtmo/docker-android,理論上版本越高運行的開銷會越大,所以本例以運行一個低版本的android 來演示,執行下面命令拉取一個android 9.0版本鏡像.

sudo docker pull budtmo/docker-android:emulator_9.0

拉取后開始運行容器,下面命令指運行一臺Samsung Galaxy S7 的安卓設備,其他機型可以去看一下官方教程,對外訪問端口是6080

docker run -d -p 6080:6080 -e EMULATOR_DEVICE="Samsung Galaxy S7" -e WEB_VNC=true --device /dev/kvm --name android-container budtmo/docker-android:emulator_9.0

運行后,輸入sudo docker ps 可以看到運行的容器,UP狀態表示正常

image-20240410143933916

運行后,在瀏覽器訪問Linux ubuntu 6080端口,即可成功看到android 模擬器界面,首次啟動可能會比較慢,如果覺得卡,可以部署更低的機型,如S6,本地測試訪問成功后,下面我們安裝cpolar內網穿透,實現遠程訪問

image-20240410161732374

3. Ubuntu安裝Cpolar

上面在本地Docker中成功部署了Android模擬器,并局域網訪問成功,下面我們在Linux安裝Cpolar內網穿透工具,通過Cpolar 轉發本地端口映射的http公網地址,我們可以很容易實現遠程訪問,而無需自己注冊域名購買云服務器.下面是安裝cpolar步驟

cpolar官網地址: https://www.cpolar.com

  • 使用一鍵腳本安裝命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 安裝完成后,可以通過如下方式來操作cpolar服務,首先執行加入系統服務設置開機啟動,然后再啟動服務
# 加入系統服務設置開機啟動
sudo systemctl enable cpolar# 啟動cpolar服務
sudo systemctl start cpolar# 重啟cpolar服務
sudo systemctl restart cpolar# 查看cpolar服務狀態
sudo systemctl status cpolar# 停止cpolar服務
sudo systemctl stop cpolar

Cpolar安裝和成功啟動服務后,內部或外部瀏覽器上通過局域網IP加9200端口即:【http://192.168.xxx.xxx:9200】訪問Cpolar管理界面,使用Cpolar官網注冊的賬號登錄,登錄后即可看到cpolar web 配置界面,接下來在web 界面配置即可

image-20240220142041422

4. 配置公網地址

點擊左側儀表盤的隧道管理——創建隧道,創建一個android 模擬器的公網http地址隧道!

  • 隧道名稱:可自定義命名,注意不要與已有的隧道名稱重復
  • 協議:選擇http
  • 本地地址:6080(docker部署后對外訪問的端口)
  • 域名類型:免費選擇隨機域名
  • 地區:選擇China vip

點擊創建

image-20240410163725485

隧道創建成功后,點擊左側的狀態——在線隧道列表,查看所生成的公網訪問地址,有兩種訪問方式,一種是http 和https,兩種都可以訪問,下面選擇其中一種進行遠程訪問

image-20240410163747616

5. 遠程訪問

使用上面Cpolar生成的 https公網地址,在任意設備的瀏覽器進行訪問,即可成功看到我們Android 模擬器,簡單幾步即可實現無需云服務器,無需公網IP實現遠程訪問.

image-20240410164057546

小結

為了更好地演示,我們在前述過程中使用了cpolar生成的隧道,其公網地址是隨機生成的。

這種隨機地址的優勢在于建立速度快,可以立即使用。然而,它的缺點是網址由隨機字符生成,不太容易記憶(例如:3ad5da5.r10.cpolar.top)。另外,這個地址在24小時內會發生隨機變化,更適合于臨時使用。

我一般會使用固定二級子域名,原因是我希望將網址發送給同事或客戶時,它是一個固定、易記的公網地址(例如:android.cpolar.cn),這樣更顯正式,便于流交協作。

6. 固定Cpolar公網地址

由于以上使用cpolar所創建的隧道使用的是隨機公網地址,24小時內會隨機變化,不利于長期遠程訪問。因此我們可以為其配置二級子域名,該地址為固定地址,不會隨機變化【ps:cpolar.cn已備案】

注意需要將cpolar套餐升級至基礎套餐或以上,且每個套餐對應的帶寬不一樣。【cpolar.cn已備案】

登錄cpolar官網,點擊左側的預留,選擇保留二級子域名,設置一個二級子域名名稱,點擊保留,保留成功后復制保留的二級子域名名稱

image-20240410164235792

保留成功后復制保留成功的二級子域名的名稱

image-20240410164326796

返回登錄cpolar web UI管理界面,點擊左側儀表盤的隧道管理——隧道列表,找到所要配置的隧道,點擊右側的編輯

image-20240410164400239

修改隧道信息,將保留成功的二級子域名配置到隧道中

  • 域名類型:選擇二級子域名
  • Sub Domain:填寫保留成功的二級子域名

點擊更新(注意,點擊一次更新即可,不需要重復提交)

image-20240410164429886

更新完成后,打開在線隧道列表,此時可以看到公網地址已經發生變化,地址二級名稱變成了我們自己設置的二級子域名名稱

image-20240410164454787

7. 固定地址訪問

最后,我們使用固定的公網https地址訪問,可以看到同樣訪問成功,這樣一個固定且永久不變的公網地址就設置好了,隨時隨地都可以遠程訪問本地android模擬器,無需公網IP,無需云服務器!

image-20240410164559476

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13446.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13446.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13446.shtml

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

相關文章

51建模網AR虛擬試用,讓網購不再只靠想象!

在數字化的浪潮中,網購已成為現代人生活的一部分。然而,傳統的網購模式常常因為無法直接試穿、試用商品,導致買家在收到商品后感到失望,特別是面對大件家居產品時,僅憑屏幕上的圖片和尺寸描述,很難準確地把…

智能AI愈發強大,企業如何防范AI網絡釣魚攻擊

隨著AI技術的快速發展,如ChatGPT等智能化工具在各個領域得到了廣泛應用。然而,這些工具的普及也給網絡安全帶來了新的挑戰。AI模型的自然語言生成功能使得網絡釣魚攻擊更加智能化和隱蔽化,攻擊者能夠利用AI技術生成高度逼真的欺騙性郵件和其他…

深度學習之基于YoloV5人體姿態摔倒識別分析報警系統

歡迎大家點贊、收藏、關注、評論啦 ,由于篇幅有限,只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 一、項目背景與意義 隨著人口老齡化的加劇和人們對健康安全的日益關注,摔倒事件在老年人、幼兒、體育運…

2024-05-23 服務器開發-windows-加載dll動態庫

摘要: 2024-05-23 服務器開發-windows-加載dll動態庫 使用 LoadLibrary HMODULE mdl ::LoadLibrary(L"mylib.dll");if (!mdl){auto err ::GetLastError();std::cout << "ERROR: load VxCfgClient fail, error: " << err << std::endl…

分布式文件系統minIo

分布式文件系統 什么是分布式文件系統 一個計算機無法存儲海量的文件&#xff0c;通過網絡將若干計算機組織起來共同去存儲海量的文件&#xff0c;去接收海量用戶的請求&#xff0c;這些組織起來的計算機通過網絡進行通信&#xff0c;如下圖&#xff1a; 好處&#xff1a; 1、…

怎么ai思維導圖自動生成?推薦這三個工具

怎么ai思維導圖自動生成&#xff1f;隨著人工智能&#xff08;AI&#xff09;技術的不斷發展&#xff0c;其在各個領域的應用也日益廣泛。在思維導圖這一領域&#xff0c;AI技術的引入不僅極大地提高了制圖效率&#xff0c;還為用戶提供了更多樣化、個性化的制圖體驗。本文將為…

JavaScript身份三要素認證API、身份證二要素實名認證接口

996這種工作模式&#xff0c;試問有多少人愿意接受&#xff1f;然而這種工作制度在程序員的圈子里早已成為不成文的“規定”。網絡段子也有不少調侃程序員的&#xff0c;比如&#xff1a;一程序員去面試&#xff0c;面試官問&#xff1a;“你畢業才兩年&#xff0c;這三年工作經…

基于消息中間件的異步通信機制在系統解耦中的優化與實現

??謝謝大家捧場&#xff0c;祝屏幕前的小伙伴們每天都有好運相伴左右&#xff0c;一定要天天開心哦&#xff01;?? &#x1f388;&#x1f388;作者主頁&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; ?? 帥哥美女們&#xff0c;我們共同加油&#xff01;一起進步&am…

【只會for循環? 來看下, Nodejs中典型的5種循環方式】

Nodejs中的&#xff0c;除了經典的for循環 , 其實還有幾種好用的循環方式&#xff0c; 并有典型的使用場景。下面來一起看下&#x1f447;&#x1f3fb; 5種循環用法 For Loop&#xff1a;這是最常見的循環方式&#xff0c;適用于你知道循環次數的情況。 for (let i 0; i &…

GPT-SoVITS語音克隆部署與使用

GPT-SoVITS是一款強大的少量樣本語音轉換與語音合成開源工具。當前&#xff0c;GPT-SoVITS實現了如下幾個方面的功能&#xff1a; 由參考音頻的情感、音色、語速控制合成音頻的情感、音色、語速可以少量語音微調訓練&#xff0c;也可不訓練直接推理可以跨語種生成&#xff0c;…

【AI】試用 ai 提取文章內容嘗試

電梯產業面臨這樣一個問題&#xff0c;因為太多的品牌&#xff0c;將近 400 多個&#xff0c;甚至有寶馬&#xff0c;奧迪&#xff0c;你敢相信&#xff0c;一家造汽車的造過電梯?不過好像想想也是&#xff0c;電梯是第二大交通工具&#xff0c;電梯從某種意義上來說&#xff…

無網環境禁止 WPS 提示登錄,且基本功能按鈕可用

目前 WPS 升級后&#xff0c;每次打開都會提示你登錄 WPS&#xff0c;并且在未登錄之前所有基本功能按鈕是置灰狀態&#xff0c;無法使用。 如此一來&#xff0c;在內網或無網環境&#xff0c;我們無法登陸 WPS &#xff0c;就給我們的使用帶來了極大的不便&#xff0c;那么有沒…

全網最全面的由淺到深的Kotlin基礎教程(七)

前言 本篇文章接著上一篇文章全網最全面的由淺到深的Kotlin基礎教程&#xff08;六&#xff09;繼續進階學習kotlin&#xff0c;建議看完上一篇文章&#xff0c;再來看本篇文章。本篇主要分析一些常用的kotlin函數源碼&#xff0c;以及用kotlin簡單實現Rxjava的幾個操作符。堅…

卡梅德生物噬菌體展示多肽庫

噬菌體展示多肽文庫在新藥發現領域展現出巨大的潛力和應用價值。卡梅德生物的噬菌體展示肽庫通過將大量肽序列插入到噬菌體基因組中&#xff0c;并在噬菌體表面展示這些肽&#xff0c;構建了一個多樣性的肽庫。 在新藥發現過程中&#xff0c;噬菌體展示多肽文庫可以用于篩選具有…

全志A133 android10 調試vibrator震動馬達

一&#xff0c;前提條件 全志使用的馬達配置為上電震動&#xff0c;下電停止&#xff0c;需測試硬件是否正常。馬達供電最好為獨立供電&#xff0c;避免干擾。 二&#xff0c;適配步驟 1. dts中增加馬達配置 motor_para {compatible "allwinner,sunxi-vibrator";…

java工廠模式示例代碼

工廠模式是一種創建型設計模式&#xff0c;它提供了一種將對象的創建與使用分離的方法。在工廠模式中&#xff0c;我們通過工廠類來創建對象&#xff0c;而不是直接在客戶端代碼中使用 new 關鍵字來創建對象。以下是一個簡單的Java工廠模式示例代碼&#xff1a; 產品接口 首先…

BGP實驗:聯邦和發射器實驗

BGP實驗&#xff1a;聯邦和發射器實驗 一、實驗拓撲 二、實驗要求及分析 實驗要求&#xff1a; 1、AS1存在兩個環回&#xff0c;一個地址為192.168.1.0/24&#xff0c;該地址不能再任何協議中宣告&#xff1b; ? AS3存在兩個環回&#xff0c;一個地址為192.168.2.0/24&…

解決ModuleNotFoundError: No module named ‘open_clip‘問題

在使用stable diffusion大模型時&#xff0c;添加一些模型后啟動df頁面報錯&#xff1a;ModuleNotFoundError: No module named open_clip 使用 pip install open_clip命令下載失敗&#xff0c;報錯&#xff1a; Looking in indexes: https://mirrors.aliyun.com/pypi/simple…

Redis【B站面試題】

前言 2023-07-27 22:44:59 出自B站 灰灰的Java面試 Redis Redis為什么快&#xff1f; 1.純內存KV操作 Redis的操作都是基于內存的&#xff0c;CPU不是 Redis性能瓶頸,&#xff0c;Redis的瓶頸是機器內存和網絡帶寬。 在計算機的世界中&#xff0c;CPU的速度是遠大于內存的速…

Java技術深度解析:高級面試問題與精粹答案(二)

Java 面試問題及答案 1. 什么是Java的垃圾回收機制&#xff1f;它是如何工作的&#xff1f; 答案&#xff1a; Java的垃圾回收機制&#xff08;Garbage Collection&#xff0c;GC&#xff09;是Java運行時環境&#xff08;JRE&#xff09;中的一個功能&#xff0c;用于自動管…