ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

docker-android 一条命令跑起 Android 模拟器

2026/9/11 13:22:24 拓冰建站 浏览量
docker-android 一条命令跑起 Android 模拟器 docker-android 一条命令跑起 Android 模拟器【免费下载链接】docker-androidAndroid in docker solution with noVNC supported, video recording and mcp server项目地址: https://gitcode.com/GitHub_Trending/do/docker-androiddocker-android 是预装 Android 模拟器的 Docker 镜像自带 Web VNC 网页画面、日志共享和 Appium 服务器解决模拟器启动慢、环境难复现、CI 跑不了的问题。读完本文你能用一条 docker run 命令拉起带网页画面的模拟器跑通 UI 自动化测试。你大概遇到过这种局面换台电脑装 SDK、下系统镜像、调设备配置折腾半天模拟器才起来测试机上每次冷启动要等几分钟到了 CI 机器上没显示、没 KVM模拟器直接跑不起来团队成员各自的环境还不一样复现一个偶现问题先要对半天环境。docker-android 的思路是把模拟器整个装进容器一条命令拉起来浏览器里就能看画面测试框架随镜像一起带。快速上手一条命令启动 docker-android 容器前提只有一个宿主机是 Ubuntu且支持 KVM 加速Mac/Windows 需要先起一个支持虚拟化的 Ubuntu 虚拟机。先确认 KVM 可用sudo apt install cpu-checker kvm-ok这条命令安装检查工具并验证 CPU 虚拟化是否开启输出 KVM acceleration can be used 才说明宿主机能跑硬件加速的模拟器。启动容器docker run -d -p 6080:6080 -e EMULATOR_DEVICESamsung Galaxy S10 \ -e WEB_VNCtrue --device /dev/kvm --name android-container \ budtmo/docker-android:emulator_11.0这条命令在后台启动一个 Android 11 的 Galaxy S10 模拟器把容器内 6080 端口映射到本机并开启 Web VNC 网页画面。--device /dev/kvm是把宿主机的 KVM 设备透传进容器没有它模拟器会慢到没法用。镜像按 Android 版本分 tagemulator_9.0到emulator_14.0都提供。浏览器打开http://localhost:6080等一会儿就能看到模拟器的实时画面。Web VNC 怎么在浏览器里看模拟器画面Web VNC 是 docker-android 最省事的能力容器内跑着 x11vnc noVNC你在浏览器里看到的画面和容器里的实际屏幕一致不用装任何客户端。开启方式就是启动时加-p 6080:6080 -e WEB_VNCtrue。想直接跳过连接页自动连上访问http://localhost:6080/?autoconnecttrue只想看不能操作比如给非测试同事看运行过程加view_onlytrue担心被乱动可以用-e VNC_PASSWORDxxx给 VNC 设密码。要换端口跑多个容器改两个变量即可docker run ... -p 6081:6081 -e WEB_VNCtrue -e WEB_VNC_PORT6081 ...所有 VNC、日志共享相关的开关都列在 documentations/CUSTOM_CONFIGURATIONS.md 里配错了查那张表最快。容器内跑 Appium 做 UI 自动化测试docker-android 可以直接在容器内启动 Appium 服务器。你在测试脚本里连本机 4723 端口流量经 Docker 端口映射进容器Appium 再操作同容器内的模拟器宿主机上不需要装任何东西。在启动命令上追加两个参数docker run -d -p 6080:6080 -p 4723:4723 \ -e EMULATOR_DEVICESamsung Galaxy S10 -e WEB_VNCtrue -e APPIUMtrue \ --device /dev/kvm --name android-container budtmo/docker-android:emulator_11.0然后测试脚本把http://localhost:4723/wd/hub作为 Appium 地址即可。要传 Appium 的额外启动参数用环境变量APPIUM_ADDITIONAL_ARGS。镜像里的 Appium 是 2.x可以直接挂到 Selenium Grid 4.x完整说明见 documentations/USE_CASE_APPIUM.md。用 adb connect 从宿主机控制 docker-android 模拟器有时候你想用自己熟悉的宿主机 adb而不是钻进容器执行命令。把 adb 的两个端口映射出来再远程连接就行# 启动时追加 -p 5554:5554 -p 5555:5555 adb connect docker-machine-ip:5555连上之后adb devices能看到容器里的设备推送 APK、抓日志都用平时的方式。另一个高频场景是模拟收短信不用真机docker exec -it android-container adb emu sms send 13800000000 验证码是123456这条命令往模拟器里发一条短信登录验证、OTP 流程的测试就闭环了。容器内置了 Samsung Galaxy S6 到 S10、Nexus 4/5/7 等多套设备配置机型清单和设备配置文件在 mixins/configs/devices/profiles/ 下换机型只需改EMULATOR_DEVICE的值。控制流程详见 documentations/USE_CASE_CONTROL_EMULATOR.md。docker-android 容器内模拟器的短信场景通过 adb emu sms send 向容器内设备推送短信如何验证模拟器启动成功并解决常见坑启动容器后执行docker exec -it android-container cat device_status这条命令直接读容器内的状态文件模拟器就绪后会输出 running。如果长时间不是 running先想两个最常见的坑。坑一kvm-ok 报 KVM acceleration may NOT be available。镜像只能跑在 Ubuntu 上Mac/Windows 直连跑不起来。解法是起一个 Ubuntu 虚拟机并在虚拟机设置里开启虚拟化再在虚拟机里执行 docker run。Windows 11 的 WSL2 用户需要按 README 里 WSL2 Hardware acceleration 一节配置/dev/kvm权限。坑二容器重启后应用数据全没了。默认行为是容器销毁时模拟器数据一起销毁。需要保留数据就挂一个卷docker run -v data:/home/androidusr ...把数据目录挂到命名卷data上容器重建后已安装的 App 和数据都还在。进阶构建项目、多实例并行与 CI 集成在容器里构建 Android 工程镜像自带 Android SDK 和构建工具把工程目录挂进去直接跑 gradle构建环境和模拟器环境是同一个详见 documentations/USE_CASE_BUILD_ANDROID_PROJECT.mddocker run -it --rm -v $PWD:/home/androidusr/tmp -w /home/androidusr/tmp \ --entrypoint /bin/bash budtmo/docker-android:emulator_11.0 -c ./gradlew build多实例并行跑不同机型/版本每个容器改WEB_VNC_PORT、WEB_LOG_PORT和映射端口就能在一台机器上并排跑emulator_11.0、emulator_12.0等不同 Android 版本各自独立看画面。接 Jenkins 做 CI官方文档给出了 Jenkins 集成方式含 VNC 实时预览插件流水线里用docker run起容器、跑 Appium、销毁容器测试环境每次都是全新的。docker-android 用户行为分析面板展示社区使用的 Android 版本与设备分布从一条 docker run 到 CI 流水线docker-android 把模拟器从装在电脑里的软件变成了按需启动的容器服务。装环境、开画面、跑 Appium、adb 远程操控整条链路都不离开 Docker这正是它适合自动化测试的核心原因。【免费下载链接】docker-androidAndroid in docker solution with noVNC supported, video recording and mcp server项目地址: https://gitcode.com/GitHub_Trending/do/docker-android创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考