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

news2024/11/18 11:55:21

目录

前言

1. 虚拟化环境检查

2. Android 模拟器部署

3. Ubuntu安装Cpolar

4. 配置公网地址

5. 远程访问

小结

6. 固定Cpolar公网地址

7. 固定地址访问

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

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

个人主页:

懒大王敲代码-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_58070962?type=blog

其他专栏:

技术分享专栏icon-default.png?t=O83Ahttp://t.csdnimg.cn/LVrbCjava专栏icon-default.png?t=O83Ahttp://t.csdnimg.cn/bw2Thubantu与C语言学习专栏icon-default.png?t=O83Ahttp://t.csdnimg.cn/A8yIivue3项目实战专栏icon-default.png?t=O83Ahttp://t.csdnimg.cn/vP2no内网穿透专栏icon-default.png?t=O83Ahttp://t.csdnimg.cn/GJZJA懒大王闲谈专栏icon-default.png?t=O83Ahttp://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 模拟器部署

image-20240410142131130

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状态表示正常

image-20240410143933916

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

image-20240410161732374

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 界面配置即可

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,无需云服务器!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2242796.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大麦抢票科技

仅供学习参考,切勿再令您所爱的人耗费高昂的价格去购置黄牛票 ⚠️核心内容参考: 据悉,于购票环节,大麦凭借恶意流量清洗技术,于网络层实时甄别并阻拦凭借自动化手段发起下单请求的流量,强化对刷票脚本、刷票软件以及…

【STM32】基于SPI协议读写SD,详解!

文章目录 0 前言1 SD卡的种类和简介1.1 SD卡的种类1.2 SD卡的整体结构1.3 SD卡运行机制——指令和响应2 SD卡的通信总线2.1 SDIO2.2 SPI3 硬件连接4 代码实践【重点】4.1 HAL库移植4.2 标准库移植4.3 遇到的问题和解决方案5 扩展阅读0 前言 因为项目需要,使用stm32读写sd卡,这…

kafka管理工具

文章目录 前言一、Kafka Assistan1.1 描述1.2、配置安装 二、Conduktor2.1、描述2.2、配置安装 三、kafka-maneger3.1、描述3.2、配置安装3.3、命令启动3.4、[refer to](https://www.ctyun.cn/document/10000120/10033218#section-39755766f4910e4b) 前言 提示:这里…

leetcode_二叉树最大深度

对二叉树的理解 对递归调用的理解 对内存分配的理解 基础数据结构(C版本) - 飞书云文档 每次函数的调用 都会进行一次新的栈内存分配 所以lmax和rmax的值不会混在一起 /*** Definition for a binary tree node.* struct TreeNode {* int val;* …

使用 Axios 拦截器优化 HTTP 请求与响应的实践

目录 前言1. Axios 简介与拦截器概念1.1 Axios 的特点1.2 什么是拦截器 2. 请求拦截器的应用与实践2.1 请求拦截器的作用2.2 请求拦截器实现 3. 响应拦截器的应用与实践3.1 响应拦截器的作用3.2 响应拦截器实现 4. 综合实例:一个完整的 Axios 配置5. 使用拦截器的好…

高亚科技签约美妥维志化工,提升业务协同与项目运营效率

近日,中国企业管理软件资深服务商高亚科技与韶关美妥维志化工有限公司(以下简称“美妥维志”)正式签约。基于高亚科技的8Manage PM项目管理软件,美妥维志将实现项目进度、人员审批及问题的统一管理,提升部门间协同效率…

使用真实 Elasticsearch 进行更快的集成测试

作者:来自 Elastic Piotr Przybyl 了解如何使用各种数据初始化和性能改进技术加快 Elasticsearch 的自动化集成测试速度。 在本系列的第 1 部分中,我们探讨了如何编写集成测试,让我们能够在真实的 Elasticsearch 环境中测试软件,并…

数据分布之指数分布(sample database classicmodels _No.10)

数据分布之指数分布(sample database classicmodels _No.10) 准备工作,可以去下载 classicmodels 数据库具体如下 点击:classicmodels 也可以去 下面我的博客资源下载 https://download.csdn.net/download/tomxjc/88685970 文章…

RPC-健康检测机制

什么是健康检测? 在真实环境中服务提供方是以一个集群的方式提供服务,这对于服务调用方来说,就是一个接口会有多个服务提供方同时提供服务,调用方在每次发起请求的时候都可以拿到一个可用的连接。 健康检测,能帮助从连…

Flink_DataStreamAPI_执行环境

DataStreamAPI_执行环境 1创建执行环境1.1getExecutionEnvironment1.2createLocalEnvironment1.3createRemoteEnvironment 2执行模式(Execution Mode)3触发程序执行 Flink程序可以在各种上下文环境中运行:我们可以在本地JVM中执行程序&#x…

Cyberchef配合Wireshark提取并解析HTTP/TLS流量数据包中的文件

本文将介绍一种手动的轻量级的方式,还原HTTP/TLS协议中传输的文件,为流量数据包中的文件分析提供帮助。 如果捕获的数据包中存在非文本类文件,例如png,jpg等图片文件,或者word,Excel等office文件异或是其他类型的二进…

Golang云原生项目:—实现ping操作

熟悉报文结构 ICMP校验和算法: 报文内容,相邻两个字节拼接到一起组成一个16bit数,将这些数累加求和若长度为奇数,则将剩余一个字节,也累加求和得出总和之后,将和值的高16位与低16位不断求和,直…

基于STM32 HAL库的FFT计算与数学运算:幅值、频率、均方根、平均值、最大值、最小值、峰峰值与标准差

一、用STM32进行FFT计算与数学运算的过程 1. 信号采集 首先,我们需要使用STM32的ADC模块来采集模拟信号,比如三相交流电。ADC将模拟信号(如电压或电流)转换为数字信号,供后续处理。 采样数量:FFT的计算通…

关于Github报错Verify your two-factor authentication (2FA) settings的解决方案

如果我们在使用GitHub出现2FA验证问题:Verify your two-factor authentication (2FA) settings,那么可以参考下面的解决方法解决问题。 当然,如果有国外的手机号直接使用验证码接收就可以,问题是不支持中国手机啊。那么怎么办呢&…

【机器学习chp2】贝叶斯最优分类器、概率密度函数的参数估计、朴素贝叶斯分类器、高斯判别分析。万字超详细分析总结与思考

前言,请先看。 本文的《一》《二》属于两个单独的知识点:共轭先验和Laplace平滑,主要因为他们在本文的后续部分经常使用,又因为他们是本人的知识盲点,所以先对这两个知识进行了分析,后续内容按照标题中的顺…

游戏引擎学习第16天

视频参考:https://www.bilibili.com/video/BV1mEUCY8EiC/ 这些字幕讨论了编译器警告的概念以及如何在编译过程中启用和处理警告。以下是字幕的内容摘要: 警告的定义:警告是编译器用来告诉你某些地方可能存在问题,尽管编译器不强制要求你修复…

01.防火墙概述

防火墙概述 防火墙概述1. 防火墙的分类2. Linux 防火墙的基本认识3. netfilter 中五个勾子函数和报文流向 防火墙概述 防火墙( FireWall ):隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的 规则检…

express 从0-1如何创建一个项目 注册接口

内容参考: windos下安装mysql express 使用mysql 一、创建一个空项目 二、创建一个包管理工具 npm init -y三、安装需要的插件及app.js的部分实现 npm i express 安装express 框架 npm i cors 安装cors 用于跨域 npm install mysql2 安装mysql数据库 npm i b…

Shell基础(4)

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团…

(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(下)----空间数据的编辑与处理(超超超详细!!!)

续上篇博客(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(上)----空间数据的编辑与处理(超超超详细!!!)-CSDN博客 继续更新 本篇博客内容为道路拓扑检查与修正&#x…