在 Docker 里运行 Android 模拟器:一次跑通的实操指南
【免费下载链接】docker-androidAndroid in docker solution with noVNC supported, video recording and mcp server项目地址: https://gitcode.com/GitHub_Trending/do/docker-android
在 CI 里跑 Android UI 测试,模拟器启动要等 40 分钟,环境还和同事本机对不上。docker-android 是现成的 Android 模拟器容器镜像:一条 docker run,完整模拟器就在容器里跑起来,浏览器里直接看屏幕。不用装 SDK,不用下载系统镜像。
一句话定位:docker-android 是什么
一个把 Android 模拟器、noVNC 网页屏幕、ADB 都装进预构建镜像的项目。相比原生 Android Studio 模拟器:
- 环境就是镜像:省掉装 SDK、下系统镜像的步骤,每台机器结果一致
- 天然适合 CI:拉镜像、跑、销毁,不占用固定机器
- 浏览器可访问:开一个端口就能看到模拟器画面
三步跑通第一个容器
第一步:用 kvm-ok 检查 KVM 权限
模拟器依赖硬件虚拟化,先在宿主机确认:
sudo apt install cpu-checker kvm-ok输出 "KVM acceleration can be used" 就通过了。⚠️ 镜像只在 Ubuntu 宿主上运行,macOS/Windows 用户先准备一台 Ubuntu 虚拟机。
第二步:启动第一条 docker run
这条命令启动 Galaxy S10、Android 11 的模拟器,并在 6080 端口开放网页屏幕:
docker run -d -p 6080:6080 -e EMULATOR_DEVICE="Samsung Galaxy S10" -e WEB_VNC=true --device /dev/kvm --name android-container budtmo/docker-android:emulator_11.0标签就是 Android 版本,emulator_9.0 到 emulator_14.0 可选,见 README.md。
第三步:访问验证
浏览器打开 http://localhost:6080 应该能看到模拟器界面。也可以用这条命令确认启动状态:
docker exec -it android-container cat device_status状态显示设备启动完成后,这条链路就算跑通了。
你最常用的四个能力
浏览器打开模拟器屏幕
WEB_VNC=true启用 noVNC,宿主机不用装任何 VNC 客户端。链接后加view_only=true还能只允许观看,方便把画面分享给同事。
从宿主机 adb connect 远程控制
容器里多映射 5554、5555 两个端口,宿主机执行adb connect <容器IP>:5555后,你本地的脚本和测试框架就能直接驱动容器里的设备,详见 控制模拟器文档。
一条命令模拟短信
测应用的短信接收逻辑不用等真短信,直接用 adb 发:
docker exec -it android-container adb emu sms send 12345678 "hello"多设备配置随参数切换
EMULATOR_DEVICE支持 Galaxy S6/S7/S8/S9/S10、Nexus 4/5/7、Nexus 7 平板和 Pixel C,换机型只改这一个参数,完整设备表在 README.md。
两个进阶工作流
接入 Appium 跑 UI 测试
需要自动化时,启动命令加 4723 端口映射和APPIUM=true:
docker run -d -p 6080:6080 -p 4723:4723 -e EMULATOR_DEVICE="Samsung Galaxy S10" -e WEB_VNC=true -e APPIUM=true --device /dev/kvm --name android-container budtmo/docker-android:emulator_11.0Appium Server 跑在容器内,额外参数经APPIUM_ADDITIONAL_ARGS透传,细节见 Appium 文档。
挂进 Jenkins 流水线
Jenkins 侧动作只有三步:拉镜像、docker run、adb connect。完整 Job 配置看 Jenkins 文档,部署到 AWS、GCP 等云上也都有现成说明。
避坑速查
kvm-ok提示不支持→ 依次查模块和权限:lsmod | grep kvm、groups | grep kvm,都正常再查 BIOS 虚拟化开关。KVM 权限配置基本就这一条链路- macOS/Windows 启动失败→ 镜像只认 Ubuntu 宿主;Windows 11 可用 WSL2 嵌套虚拟化,步骤在 README.md
- 容器重启后数据没了→ docker run 时加
-v data:/home/androidusr挂载卷,装过的应用和短信都不会丢 - 外部 adb 连不上→ 确认映射了
-p 5554:5554 -p 5555:5555 - 不想让别人操作屏幕→ 网页链接加
&view_only=true,或用VNC_PASSWORD设密码
下一步
docker-android 把容器化 Android 测试环境从搭半天变成一条 docker run:环境是镜像、屏幕在浏览器、控制走 adb。现在可以 clone https://gitcode.com/GitHub_Trending/do/docker-android ,按 README.md 里的最小示例完整跑一遍。
【免费下载链接】docker-androidAndroid in docker solution with noVNC supported, video recording and mcp server项目地址: https://gitcode.com/GitHub_Trending/do/docker-android
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考