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

容器化 Android 开发效率:cpolar 内网穿透服务优化远程协作流程

文章目录

    • 前言
    • 1. 虚拟化环境检查
    • 2. Android 模拟器部署
    • 3. Ubuntu 安装 Cpolar
    • 4. 配置公网地址
    • 5. 远程访问
        • 小结
    • 6. 固定 Cpolar 公网地址
    • 7. 固定地址访问

前言

在移动应用开发流程中,测试环境的一致性和可访问性一直是制约团队效率的关键因素。Docker-Android 作为新兴的容器化解决方案,通过将 Android 模拟器封装为标准化容器,解决了开发环境 “在我机器上能运行” 的经典难题。但这种本地部署模式,却为跨地域团队协作和多设备测试带来了新的挑战。

技术架构层面,Docker-Android 的远程访问面临三重障碍:一是容器网络隔离导致的端口映射复杂性,二是动态 IP 环境下的服务发现难题,三是跨网络调试的低延迟要求。

cpolar 内网穿透服务与 Docker-Android 的技术整合,通过创新的网络代理机制破解了这些难题。其实现原理基于三个核心技术:容器网络命名空间的端口绑定技术解决隔离问题,动态 DNS 解析服务应对 IP 变化,而 TCP 协议优化则将 ADB 命令响应延迟控制在 50ms 以内。深圳某移动游戏公司的实践表明,采用该方案后,其远程团队的环境一致性问题减少 91%,跨设备调试效率提升 240%。

对于技术团队而言,这种整合带来了开发模式的革新:Docker-Android 容器保持在本地网络,通过 cpolar 的加密隧道对外暴露,远程开发者使用本地 ADB 工具即可连接,所有操作如同直接操作本地容器。

本文主要介绍如何在 Ubuntu 系统使用 Docker 部署 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

当容器化技术遇上智能穿透方案,Android 开发不仅实现了效率跃升,更让团队协作突破了物理空间的桎梏。

cpolar 与 Docker-Android 的组合为移动开发团队打造了 “云端测试设备池”。3-5 人小团队可使用 cpolar 免费版满足基本需求,10 人以上团队建议升级专业版获取更多隧道和设备支持,这种 “设备集中管理 + 穿透访问” 的模式将成为移动开发的新范式。

本篇文章知识点来源[cpolar 官网][https://www.cpolar.com]

  1. cpolar 博客:配置二级子域名: https://www.cpolar.com/blog/configure-the-secondary-subdomain-name
  2. cpolar 博客:配置自定义域名: https://www.cpolar.com/blog/configure-your-own-domain-name
  3. cpolar 博客:配置固定 TCP 端口地址: https://www.cpolar.com/blog/configure-fixed-tcp-port-address
  4. cpolar 博客:配置固定 FTP 地址: https://www.cpolar.com/blog/configure-fixed-ftp-address
http://www.lryc.cn/news/624833.html

相关文章:

  • 【Langchain系列三】GraphGPT——LangChain+NebulaGraph+llm构建智能图数据库问答系统
  • Swift + Xcode 开发环境搭建终极指南
  • 一个月内快速掌握蓝牙原理与应用的全面学习规划
  • 104、【OS】【Nuttx】【周边】文档构建渲染:安装 Sphinx 扩展(上)
  • Day7--滑动窗口与双指针--1695. 删除子数组的最大得分,2958. 最多 K 个重复元素的最长子数组,2024. 考试的最大困扰度
  • 负载均衡终极指南:从流量分发到云原生架构的核心解析
  • Apache IoTDB集群部署实战:1C2D架构的高性能时序数据库搭建与优化指南
  • 第4章-04-用WebDriver页面元素操作
  • onRequestHide at ORIGIN_CLIENT reason HIDE_SOFT_INPUT fromUser false
  • 告别 DOM 的旧时代:从零重塑 Web 渲染的未来
  • scikit-learn/sklearn学习|弹性网络ElasticNet解读
  • LINUX 818 shell:random;for for
  • 咨询进阶——解读咨询顾问技能模型
  • 2025 年世界职业院校技能大赛汽车制造与维修赛道高职组资讯整合
  • Unity开发中的浅拷贝与深拷贝
  • 做一个答题pk小程序多少钱?
  • Golang資源分享
  • USB基础 -- 字符串描述符 (String Descriptor) 系统整理文档
  • C++中内存池(Memory Pool)详解和完整示例
  • Mongodb(文档数据库)的安装与使用(文档的增删改查)
  • 可实时交互的AI生成世界,腾讯发布的AI框架Yan
  • 对象存储 COS 端到端质量系列 —— 终端网络诊断工具
  • EMC PCB 设计规范
  • 上汽通用牵手Momenta,别克至境L7全球首发搭载R6飞轮大模型
  • 用随机森林填补缺失值:原理、实现与实战
  • 深度学习必然用到的概率知识
  • 94、23种设计模式之工厂方法模式
  • Redis--day8--黑马点评--分布式锁(一)
  • 单片机驱动LCD显示模块LM6029BCW
  • 机器学习-决策树:从原理到实战的机器学习入门指南