当前位置: 首页 > 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.dtcms.com/a/337549.html

相关文章:

  • Redis主从架构、哨兵模式及集群比较
  • 利用深度强化学习进行芯片布局
  • 【1:1复刻R版】python版火山图函数一键出图
  • iOS 正式包签名指南
  • 【LeetCode】15. 三数之和
  • 从财务整合到患者管理:德国医疗集团 Asklepios完成 SAP S/4HANA 全链条升级路径
  • 贪心算法(Greedy Algorithm)详解
  • 【机器学习】Macro-F1(宏平均 F1)是什么?
  • SWMM排水管网水力、水质建模及在海绵与水环境中的应用技术-模拟降雨和污染物质经过地面、排水管网、蓄水和处理
  • Jenkins启动端口修改失败查找日志
  • 音频算法工程师技能1
  • Vue2篇——第五章 Vue.js 自定义指令与插槽核心
  • 【序列晋升】:9 Service Mesh微服务通信的基础设施革命
  • 电子元器件-电容终篇:基本原理、参数解读、电路作用、分类及区别、应用场景、选型、降频及实战案例
  • Linux 系统~存储高级技术
  • C++ 中的 delete 与 default 关键字详解
  • diffusion model(1.4) 相关论文阅读清单
  • 遥感数字图像处理教程——第三章课后习题
  • flutter项目适配鸿蒙
  • 人工智能 | 基于大数据的皮肤病症状数据可视化分析系统(matlab源码)
  • Java设计模式-桥接模式
  • Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
  • API 接口在电商中的重要应用​||关于API接口接入
  • 构建者设计模式 Builder
  • python学习DAY45打卡
  • 【运维实战】系统全链路监测方案~架构到实践
  • 【HTML】document api
  • 【每天学点‘音视频’】前向纠错 和 漏包重传
  • 图像分类精度评价的方法——误差矩阵、总体精度、用户精度、生产者精度、Kappa 系数
  • 在 PyCharm Notebook 中安装 YOLO