快速搭建Android开发环境:Docker部署docker-android并实现远程连接

目录

前言

[1. 虚拟化环境检查](#1. 虚拟化环境检查)

[2. Android 模拟器部署](#2. Android 模拟器部署)

[3. Ubuntu安装Cpolar](#3. Ubuntu安装Cpolar)

[4. 配置公网地址](#4. 配置公网地址)

[5. 远程访问](#5. 远程访问)

小结

[6. 固定Cpolar公网地址](#6. 固定Cpolar公网地址)

[7. 固定地址访问](#7. 固定地址访问)

作者简介: 懒大王敲代码,计算机专业应届生

今天给大家聊聊快速搭建Android开发环境:Docker部署docker-android并实现远程连接,欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

个人主页:

懒大王敲代码-CSDN博客https://blog.csdn.net/weixin_58070962?type=blog

其他专栏:

技术分享专栏http://t.csdnimg.cn/LVrbCjava专栏http://t.csdnimg.cn/bw2Thubantu与C语言学习专栏http://t.csdnimg.cn/A8yIivue3项目实战专栏http://t.csdnimg.cn/vP2no内网穿透专栏http://t.csdnimg.cn/GJZJA懒大王闲谈专栏http://t.csdnimg.cn/KxzqY


前言

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

Android应用开发日益成为业界关注的焦点,在开发过程中,对Android应用的测试和部署至关重要,这关系到应用能否在各种设备和环境下稳定运行。然而,传统的Android开发和测试环境搭建过程繁琐,且不易于管理和维护。为了解决这一问题,Docker-Android 应运而生,它将完整的Android开发环境封装在Docker容器中,大大简化了开发和部署流程。

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

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

这不仅方便了开发者的远程协作和项目管理,还提高了开发和测试的效率。根据官方说法,尽量采用ubuntu系统进行安装,采用Docker部署,首先设备需要提前安装好Docker,如没有安装,可以参考Docker 官方教程进行安装:Docker 官方安装教程.

1. 虚拟化环境检查

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

复制代码
sudo apt install cpu-checker

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

复制代码
kvm-ok

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

2. Android 模拟器部署

本文采用docker方式部署,首先拉取一个镜像,官方提供很多种安卓版本,具体可以访问Github查看:GitHub - budtmo/docker-android: Android in docker solution with noVNC supported and video recording,理论上版本越高运行的开销会越大,所以本例以运行一个低版本的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状态表示正常

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

3. Ubuntu安装Cpolar

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

cpolar官网地址: cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站

  • 使用一键脚本安装命令
复制代码
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 界面配置即可

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.cn已备案】

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

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

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

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

  • 域名类型:选择二级子域名

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

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

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

7. 固定地址访问

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

相关推荐
字节全栈_BjO1 小时前
mysql死锁排查_mysql 死锁问题排查
android·数据库·mysql
喝醉酒的小白2 小时前
几种K8s运维管理平台对比说明
运维·容器·kubernetes
明 庭2 小时前
通过 Docker 部署 pSQL 服务器的教程
服务器·docker·容器
字节全栈_kYu3 小时前
FastDFS实用笔记 (Docker 搭建环境 + 整合 SpringBoot)
spring boot·笔记·docker
Linux运维老纪14 小时前
DNS缓存详解(DNS Cache Detailed Explanation)
计算机网络·缓存·云原生·容器·kubernetes·云计算·运维开发
恋猫de小郭15 小时前
Android Studio 正式版 10 周年回顾,承载 Androider 的峥嵘十年
android·ide·android studio
杨浦老苏15 小时前
开源音乐管理软件Melody
docker·群晖·多媒体
杨浦老苏18 小时前
面向npm的实时仪表板Dashly
网络·docker·群晖·导航
aaaweiaaaaaa18 小时前
php的使用及 phpstorm环境部署
android·web安全·网络安全·php·storm
JunLan~19 小时前
Docker 部署 GLPI(IT 资产管理软件系统)
运维·docker·容器