打造高效Android远程开发环境:一键部署Docker-Android并发布公网

文章目录

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

💡 推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击跳转到网站

前言

本文将介绍如何在Linux Ubuntu系统上使用Docker部署docker-android安卓模拟器,并结合cpolar内网穿透工具实现对本地Android开发环境的公网远程访问。

随着Android应用开发的日益普及,测试和部署过程变得至关重要,这直接影响到应用在各种设备和环境中的稳定性。然而,传统的Android开发和测试环境搭建往往繁琐且难以管理。为了解决这一问题,Docker-Android应运而生,它将完整的Android开发环境封装在Docker容器中,从而大幅简化了开发和部署的流程。

更为重要的是,Docker-Android提供了灵活的配置选项,允许开发者根据项目需求进行个性化设置,以满足不同的开发和测试要求。

然而,对于需要远程访问Android开发环境的开发者来说,仅依靠Docker-Android并不足以实现这一目标。这时,我们可以借助cpolar等内网穿透工具,将本地的Docker-Android环境暴露到公网上,从而实现远程访问。cpolar通过在本地与公网之间建立安全隧道,使得远程用户能够通过公网地址访问本地的Docker-Android环境。

这种方式不仅便利了开发者的远程协作和项目管理,还提升了开发和测试的效率。根据官方建议,最好在Ubuntu系统上进行安装,并使用Docker进行部署。首先,确保设备上已安装Docker,如果尚未安装,可以参考这篇教程进行设置:Docker 安装教程

1. 虚拟化环境检查

执行下面命令安装检查工具

shell 复制代码
sudo apt install cpu-checker

然后执行下面命令检查是否支持虚拟化

shell 复制代码
kvm-ok

提示下面信息表示正常支持虚拟化环境,如果不是出现如下信息,需要检查设备开启虚拟化支持,然后再进行下面进行android 模拟器部署

2. Android 模拟器部署

本文采用docker方式部署,首先拉取一个镜像,官方提供很多种安卓版本,具体可以访问Github查看:https://github.com/budtmo/docker-android,理论上版本越高运行的开销会越大,所以本例以运行一个低版本的android 来演示,执行下面命令拉取一个android 9.0版本镜像.

shell 复制代码
sudo docker pull budtmo/docker-android:emulator_9.0

拉取后开始运行容器,下面命令指运行一台Samsung Galaxy S7 的安卓设备,其他机型可以去看一下官方教程,对外访问端口是6080

shell 复制代码
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状态表示正常

运行后,在浏览器访问Linux ubuntu 6080端口,即可成功看到android 模拟器界面,首次启动可能会比较慢,如果觉得卡,可以部署更低的机型,如S6,本地测试访问成功后,下面我们安装cpolar内网穿透,实现远程访问

3. Ubuntu安装Cpolar

上面在本地Docker中成功部署了Android模拟器,并局域网访问成功,下面我们在Linux安装Cpolar内网穿透工具,通过Cpolar 转发本地端口映射的http公网地址,我们可以很容易实现远程访问,而无需自己注册域名购买云服务器.下面是安装cpolar步骤

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

  • 使用一键脚本安装命令
shell 复制代码
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 安装完成后,可以通过如下方式来操作cpolar服务,首先执行加入系统服务设置开机启动,然后再启动服务
shell 复制代码
# 加入系统服务设置开机启动
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 界面配置即可

4. 配置公网地址

点击左侧仪表盘的隧道管理------创建隧道,创建一个android 模拟器的公网http地址隧道!

  • 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
  • 协议:选择http
  • 本地地址:6080(docker部署后对外访问的端口)
  • 域名类型:免费选择随机域名
  • 地区:选择China vip

点击创建

隧道创建成功后,点击左侧的状态------在线隧道列表,查看所生成的公网访问地址,有两种访问方式,一种是http 和https,两种都可以访问,下面选择其中一种进行远程访问

5. 远程访问

使用上面Cpolar生成的 https公网地址,在任意设备的浏览器进行访问,即可成功看到我们Android 模拟器,简单几步即可实现无需云服务器,无需公网IP实现远程访问.

小结

为了更好地演示,我们在前述过程中使用了cpolar生成的隧道,其公网地址是随机生成的。

这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址由随机字符生成,不太容易记忆(例如:3ad5da5.r10.cpolar.top)。另外,这个地址在24小时内会发生随机变化,更适合于临时使用。

我一般会使用固定二级子域名,原因是我希望将网址发送给同事或客户时,它是一个固定、易记的公网地址(例如:android.cpolar.cn),这样更显正式,便于流交协作。

6. 固定Cpolar公网地址

由于以上使用cpolar所创建的隧道使用的是随机公网地址,24小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化。

登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称

保留成功后复制保留成功的二级子域名的名称

返回登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理------隧道列表,找到所要配置的隧道,点击右侧的编辑

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

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名

点击更新(注意,点击一次更新即可,不需要重复提交)

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址二级名称变成了我们自己设置的二级子域名名称

7. 固定地址访问

最后,我们使用固定的公网https地址访问,可以看到同样访问成功,这样一个固定且永久不变的公网地址就设置好了,随时随地都可以远程访问本地android模拟器,无需公网IP,无需云服务器!

相关推荐
xvch33 分钟前
Kotlin 2.1.0 入门教程(七)
android·kotlin
望风的懒蜗牛1 小时前
编译Android平台使用的FFmpeg库
android
浩宇软件开发1 小时前
Android开发,待办事项提醒App的设计与实现(个人中心页)
android·android studio·android开发
ac-er88882 小时前
Yii框架中的多语言支持:如何实现国际化
android·开发语言·php
苏金标3 小时前
The maximum compatible Gradle JVM version is 17.
android
zhangphil3 小时前
Android BitmapShader简洁实现马赛克,Kotlin(一)
android·kotlin
元气满满的热码式3 小时前
K8S中Service详解(三)
云原生·容器·kubernetes
染诗3 小时前
docker部署flask项目后,请求时总是报拒绝连接错误
docker·容器·flask
张3蜂5 小时前
docker 部署.netcore应用优势在什么地方?
docker·容器·.netcore
心惠天意7 小时前
docker-compose篇---创建jupyter并可用sudo的创建方式
docker·jupyter·容器