Ubuntu+Docker+內網穿透:保姆級教程實現安卓開發環境遠程部署

文章目錄

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

前言

本文將詳細介紹一種創新性的云開發架構:基于Ubuntu系統構建Android仿真容器環境,并集成安全隧道技術實現遠程訪問。這種技術組合打破了傳統開發的空間限制,使開發者能夠實時調用本地資源,顯著提升分布式團隊的協作效能。

在移動應用開發領域,隨著項目復雜度的持續增長,傳統開發環境配置正面臨兩大核心痛點:配置流程繁瑣、運維開銷大。本文提出的容器技術方案通過模塊化封裝Android開發環境,有效降低了環境初始化的難度。其核心價值體現在環境復用效率提升,開發者可快速部署標準化開發環境,避免重復配置硬件參數的繁瑣操作。

針對遠程開發需求,本方案采用加密隧道技術實現私有服務的公網暴露。通過構建安全通信通道,可使異地團隊成員無縫接入本地開發環境。這種技術架構特別適用于敏捷開發模式,推薦采用Ubuntu系統作為部署基礎。如需了解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小時內會隨機變化,不利于長期遠程訪問。因此我們可以為其配置二級子域名,該地址為固定地址,不會隨機變化。

注意需要將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

經過本階段的實操演練,用戶已熟練掌握基于Ubuntu平臺的Android開發環境容器化部署技術。該技術方案通過Docker構建Android仿真系統,配合內網穿透技術突破地理限制,成功搭建了具備遠程接入能力的開發平臺。這種架構不僅解決了傳統開發環境配置效率低、維護成本高的難題,更構建了支持分布式團隊協作的可靠技術底座。

建議立即應用該技術架構,開發者可在任意網絡條件下快速啟動開發環境。除基礎功能外,該方案具備良好的可擴展性,支持CI/CD測試流程、多終端兼容性驗證等高級應用場景。為提升團隊協作效能,建議將該容器化方案推廣至開發小組,共同體驗云端開發帶來的效率革新。

預祝各位同仁工作順利,技術精進。本方案將持續迭代優化,期待與您共同探索更多技術可能性。

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

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

相關文章

Linux Kernel調試:強大的printk(一)

引言 想了好久,還是覺得這個標題才配得上printk!^_^ 我相信,不管做什么開發,使用最多的調試手段應該就是打印了,從我們學習編程語言第一課開始,寫的第一段代碼,就是打印"Hello, world&qu…

基于NLP技術的客戶投訴與需求文本分類方法研究

目錄 摘要 1. 引言 2. 文本分類基礎 2.1 文本分類的定義與類型 2.2 文本分類的評價指標 3. 傳統文本分類方法 3.1 基于TF-IDF和SVM的方法 3.2 基于主題模型和詞向量的改進方法 4. 深度學習文本分類方法 4.1 TextCNN模型 4.2 BiLSTM模型 4.3 注意力機制與Transformer…

#RabbitMQ# 消息隊列入門

目錄 一 MQ技術選型 1 運行rabbitmq 2 基本介紹 3 快速入門 1 交換機負責路由消息給隊列 2 數據隔離 二 Java客戶端 1 快速入門 2 WorkQueue 3 FanOut交換機 4 Direct交換機 5 Topic交換機 *6 聲明隊列交換機 1 在配置類當中聲明 2 使用注解的方式指定 7 消息轉…

【深度學習】多目標融合算法(六):漸進式分層提取模型PLE(Progressive Layered Extraction)

目錄 一、引言 二、PLE(Progressive Layered Extraction,漸進式分層提取模型) 2.1 技術原理 2.2 技術優缺點 2.3 業務代碼實踐 2.3.1 業務場景與建模 2.3.2 模型代碼實現 2.3.3 模型訓練與推理測試 2.3.4 打印模型結構 三、總結 一…

【Java開發日記】如何使用Java開發在線生成 pdf 文檔

一、介紹 在實際的業務開發的時候,研發人員往往會碰到很多這樣的一些場景,需要提供相關的電子憑證信息給用戶,例如網銀/支付寶/微信購物支付的電子發票、訂單的庫存打印單、各種電子簽署合同等等,以方便用…

Oracle 11g 單實例使用+asm修改主機名導致ORA-29701 故障分析

解決 把服務器名修改為原來的,重啟服務器。 故障 建表空間失敗。 分析 查看告警日志 ORA-1119 signalled during: create tablespace splex datafile ‘DATA’ size 2000M… Tue May 20 18:04:28 2025 create tablespace splex datafile ‘DATA/option/dataf…

消息隊列的使用

使用內存隊列來處理基于內存的【生產者-消費者】場景 思考和使用Disruptor Disruptor可以實現單個或多個生產者生產消息,單個或多個消費者消息,且消費者之間可以存在消費消息的依賴關系 使用Disruptor需要結合業務特性,設計要靈活 什么業務…

《帝國時代1》游戲秘籍

資源類 PEPPERONI PIZZA:獲得 1000 食物。COINAGE:獲得 1000 金。WOODSTOCK:獲得 1000 木頭。QUARRY:獲得 1000 石頭。 建筑與生產類 STEROIDS:快速建筑。 地圖類 REVEAL MAP:顯示所有地圖。NO FOG&#xf…

使用JSP踩過的坑

雖然說jsp已經過時了,但是有時維護比較老的項目還是需要的。 下面說下,我使用jsp踩過的坑: 1.關于打印輸出 在jsp中輸出使用 out.println("hello");而不是 System.out.println("hello");如果在定義函數部分需要打印…

redis集群創建時手動指定主從關系的方法

適用場景: 創建主從關系時默認參數 --cluster-replicas 1 會自動分配從節點。 為了能精確控制 Redis Cluster 的主從拓撲結構,我們通過 Redis Cluster 的手動分片功能來實現 一、手動指定主從關系的方法 使用 redis-cli --cluster-replicas 0 先創建純…

ROS合集(七)SVIn2聲吶模塊分析

文章目錄 一、整體思想二、具體誤差建模流程三、總結明確(預測值與觀測值)四、選點邏輯五、Sonar 數據處理流水線1. ROS Launch 配置(imagenex831l.launch)2. SonarNode 節點(sonar_node.py)3. Subscriber …

Python爬蟲實戰:研究PySpider框架相關技術

1. 引言 1.1 研究背景與意義 網絡爬蟲作為互聯網數據采集的重要工具,在信息檢索、輿情分析、市場調研等領域發揮著重要作用。隨著互聯網信息的爆炸式增長,如何高效、穩定地獲取所需數據成為了一個關鍵挑戰。PySpider 作為一款功能強大的 Python 爬蟲框架,提供了豐富的功能…

《大模型開源與閉源的深度博弈:科技新生態下的權衡與抉擇》

開源智能體大模型的核心魅力,在于它構建起了一個全球開發者共同參與的超級協作網絡。想象一下,來自世界各個角落的開發者、研究者,無論身處繁華都市還是偏遠小鎮,只要心懷對技術的熱愛與追求,就能加入到這場技術狂歡中…

大數據模型對陌生場景圖像的識別能力研究 —— 以 DEEPSEEK 私有化部署模型為例

摘要 本研究聚焦于已訓練的大數據模型能否識別未包含在樣本數據集中的陌生場景圖像這一問題,以 DEEPSEEK 私有化部署模型為研究對象,結合機器學習理論,分析模型識別陌生場景圖像的影響因素,并通過理論探討與實際應用場景分析&…

STM32——從點燈到傳感器控制

STM32基礎外設開發:從點燈到傳感器控制 一、前言 本篇文章總結STM32F10x系列基礎外設開發實例,涵蓋GPIO控制、按鍵檢測、傳感器應用等。所有代碼基于標準庫開發,適合STM32初學者參考。 二、硬件準備 STM32F10x系列開發板LED模塊有源蜂鳴器…

[特殊字符] 使用增量同步+MQ機制將用戶數據同步到Elasticsearch

在開發用戶搜索功能時,我們通常會將用戶信息存儲到 Elasticsearch(簡稱 ES) 中,以提高搜索效率。本篇文章將詳細介紹我們是如何實現 MySQL 到 Elasticsearch 的增量同步,以及如何通過 MQ 消息隊列實現用戶信息實時更新…

MyBatis緩存機制全解析

在MyBatis中,緩存分為一級緩存和二級緩存,它們的主要目的是減少數據庫的訪問次數,提高查詢效率。下面簡述這兩種緩存的工作原理: 一、 一級緩存(SqlSession級別的緩存) 一級緩存是MyBatis默認開啟的緩存機…

【短距離通信】【WiFi】WiFi7關鍵技術之4096-QAM、MRU

目錄 3. 4096-QAM 3.1 4096-QAM 3.2 QAM 的階數越高越好嗎? 4. MRU 4.1 OFDMA 和 RU 4.2 MRU 資源分配 3. 4096-QAM 摘要 本章主要介紹了Wi-Fi 7引入的4096-QAM對數據傳輸速率的提升。 3.1 4096-QAM 對速率的提升 Wi-Fi 標準一直致力于提升數據傳輸速率&a…

【二刷力扣】【力扣熱題100】今天的題目是:283.移動零

題目: 給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。 請注意 ,必須在不復制數組的情況下原地對數組進行操作。 示例 1: 輸入: nums [0,1,0,3,12] 輸出: [1,3,12,0,0] 示例 2: 輸…

機器學習中的多GPU訓練模式

文章目錄 一、數據并行(Data Parallelism)二、模型并行(Model Parallelism)1. 模型并行2. 張量并行(Tensor Parallelism) 三、流水線并行(Pipeline Parallelism)四、混合并行&#x…