news 2026/1/21 8:04:01

[特殊字符] 用 Docker 轻松运行 Android 模拟器,提升开发效率!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[特殊字符] 用 Docker 轻松运行 Android 模拟器,提升开发效率!

docker-android:简约而可定制的Android模拟器Docker镜像

在现代应用开发中,测试应用在不同设备和系统版本中的表现至关重要。然而,传统的设备和模拟器测试往往需要繁琐的设置和硬件支持。针对这些痛点,docker-android项目为开发者提供了一个简约而强大的解决方案,这是一款可以运行Android模拟器的Docker镜像服务。

项目概述

docker-android是一个基于Alpine的最小化Docker镜像,它捆绑了Android模拟器和KVM支持。该项目旨在为开发者提供一个大小优化的Docker镜像,仅包含功能所需的最小软件,并能够通过网络远程控制Android模拟器。其核心目的在于简化Android应用的开发与测试过程,为CI/CD流水线提供便利。

功能亮点

  1. 最小化的Alpine基础镜像:基于Alpine的Docker镜像,体积小巧。
  2. 支持Java Runtime Environment 11:直接在镜像中集成JRE 11,方便运行Java环境相关的应用。
  3. 可定制的Android版本与设备类型:开发者可以根据需要自定义Android版本及设备类型,支持多种图像格式。
  4. 内置端口转发:自动将模拟器和ADB的端口转发到容器网络接口,简化了操作。
  5. 每次重启时自动清空模拟器图像:确保环境的清洁,适合持续集成测试。
  6. 无头模式运行:支持在无头模式下运行,适合CI农场使用,并与scrcpy兼容,允许远程控制Android屏幕。

使用方法

1. 拉取与构建镜像

docker-android的默认构建将会捆绑Android SDK、平台工具和模拟器。基础使用方法如下:

使用docker-compose:

dockercompose up android-emulator

开启GPU加速:

dockercompose up android-emulator-cuda

同时使用GPU加速和谷歌Play商店:

dockercompose up android-emulator-cuda-store

通过docker直接构建镜像:

dockerbuild-tandroid-emulator.

2. 运行容器

构建完成后,您可以挂载KVM驱动程序到容器,并暴露其ADB端口:

确保至少4GB内存和8GB磁盘空间用于API 33。

dockerrun-it--rm--device/dev/kvm-p5555:5555 android-emulator

3. 持久化存储

为了在重启后保存数据,您可以将数据映射到主机的一个目录:

dockerrun-it--rm--device/dev/kvm-p5555:5555-v~/android_avd:/data android-emulator

4. 连接ADB

容器中的ADB服务器会自动启动并监听所有接口,几秒钟后,您就可以连接到容器中的ADB:

adb connect127.0.0.1:5555

同时,您可以使用scrcpy远程控制模拟器的屏幕:

scrcpy



5. 自定义镜像

您可以在构建镜像时指定API级别和图像类型,这对于需要在多个Android版本上进行测试的CI流水线非常有用。

在构建时可以使用以下参数来自定义镜像:

  • API_LEVEL:指定API级别。
  • IMG_TYPE:指定需要安装的镜像类型。
  • ARCHITECTURE:指定Android镜像的CPU架构,仅支持x86_64x86

例如,安装Android Pie支持谷歌Play商店的命令为:

dockerbuild\--build-argAPI_LEVEL=28\--build-argIMG_TYPE=google_apis_playstore\--build-argARCHITECTURE=x86\--tagandroid-emulator.

其他变量

在运行时,您可以设置以下默认变量来修改镜像行为:

  • 禁用动画:DISABLE_ANIMATION=false
  • 禁用隐藏策略:DISABLE_HIDDEN_POLICY=false
  • 跳过ADB认证:SKIP_AUTH=true
  • 决定模拟器内存大小:MEMORY=8192
  • 决定模拟器核心数:CORES=4

6. 挂载外部驱动

如果需要在容器外部存储Android SDK,可以在构建时禁用SDK的下载和安装:

dockerbuild-tandroid-emulator --build-argINSTALL_ANDROID_SDK=0.

然后,在容器中将SDK挂载到/opt/android

dockerrun-it--rm--device/dev/kvm-p5555:5555-v/shared/android/sdk:/opt/android/ android-emulator

7. 从Docker Hub拉取镜像

你可以从 Docker Hub 获取不同预构建的docker-android镜像。每个镜像变体都使用API级别和图像类型来标记。例如,拉取API 33镜像的命令为:

dockerpull halimqarroum/docker-android:api-33

相关项目

在探索docker-android的同时,以下是一些同类项目,具有不同的功能和特点:

  1. alpine-android:基于不同Alpine镜像构建的Android解决方案,旨在提供简化的Android环境。
  2. docker-android:提供WebRTC接口的Android模拟器,支持浏览器远程访问和控制Android模拟器,为用户提供更直观的测试体验。

通过使用docker-android,开发者不仅可以改善Android应用的测试流程,还可以灵活地根据需求构建和定制模拟器环境,从而节省时间和资源。选择docker-android,将让您的应用开发与测试更高效顺畅。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/20 18:32:32

MicroPE官网U盘启动运行GLM-4.6V-Flash-WEB最小化环境

MicroPE U盘启动运行GLM-4.6V-Flash-WEB最小化环境 在一场高校AI创新大赛的现场,一位学生仅用三分钟就完成了视觉大模型的部署:插入U盘、重启电脑、打开浏览器——一个能看图说话的智能系统已在教室投影上实时响应提问。这背后没有复杂的服务器配置&…

作者头像 李华
网站建设 2026/1/17 20:41:11

ComfyUI节点复制粘贴技巧加快GLM-4.6V-Flash-WEB流程搭建

ComfyUI节点复制粘贴技巧加快GLM-4.6V-Flash-WEB流程搭建 在当前多模态AI应用快速落地的背景下,开发者面临的不再是“能不能做”,而是“能不能快点做”。尤其是在图像理解、图文问答这类高频交互场景中,如何在短时间内完成模型接入、流程验证…

作者头像 李华
网站建设 2026/1/17 20:59:14

CSDN官网博客迁移至GLM-4.6V-Flash-WEB支持的智能内容平台

CSDN博客的智能跃迁:当图文内容遇见GLM-4.6V-Flash-WEB 在技术社区里,一张截图往往胜过千言万语。开发者习惯用代码片段、架构图、报错界面来传递信息,但这些图像长期以来都是“沉默的数据”——搜索引擎看不见,推荐系统读不懂&am…

作者头像 李华
网站建设 2026/1/16 11:09:42

ComfyUI热键绑定提升GLM-4.6V-Flash-WEB操作效率

ComfyUI热键绑定提升GLM-4.6V-Flash-WEB操作效率 在当今多模态AI应用快速落地的背景下,一个常见的痛点浮出水面:模型能力越来越强,但人机交互却依然笨拙。尤其是在使用像 GLM-4.6V-Flash-WEB 这类高性能视觉语言模型进行图文推理时&#xff0…

作者头像 李华
网站建设 2026/1/18 17:45:40

C# using语句管理GLM-4.6V-Flash-WEB资源释放

C# 中的 using 语句如何安全释放 GLM-4.6V-Flash-WEB 的运行资源 在构建高性能 AI 集成系统时,模型能力固然重要,但真正决定服务稳定性的,往往是那些“看不见”的工程细节——比如资源释放是否及时、连接是否被正确关闭、异常后会不会留下僵尸…

作者头像 李华
网站建设 2026/1/18 1:43:31

MyBatisPlus枚举处理器处理GLM-4.6V-Flash-WEB状态字段

MyBatisPlus枚举处理器处理GLM-4.6V-Flash-WEB状态字段 在构建现代AI驱动的Web应用时,一个看似不起眼却至关重要的问题浮出水面:如何优雅、安全地管理模型任务的状态?尤其是在集成像 GLM-4.6V-Flash-WEB 这类高并发、低延迟的多模态视觉理解模…

作者头像 李华