
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 模拟器、noVNC 网页画面和 adb 远程连接打包进同一个 Docker 镜像的项目。它解决的问题很具体每次要换 Android 版本、换机型做测试时不用再重新装一遍 SDK 和模拟器docker run一条命令就能拿到一台可用的手机。适合需要频繁搭建、复现 Android 测试环境的应用开发者和测试工程师。为什么要把模拟器装进 Docker你大概经历过这样的场景同事说我在 Android 11 的 S10 上复现了你在自己机器上配同一套环境配了半小时发现系统 API 版本还差一档。模拟器是 Android 测试里最重的依赖系统镜像、SDK、KVM 驱动每台机器各装一份版本漂移几乎不可避免。docker-android 把模拟器连同系统镜像封进容器镜像标签即版本docker pull之后环境就和你写死在 CI 脚本里的完全一致。容器里预置了多档 Android 版本镜像、十几款机型皮肤、noVNC 网页入口还内置了日志共享功能日志可以直接在网页上看。启动前唯一的硬性前提确认主机开了虚拟化模拟器靠 KVM 跑没有硬件虚拟化容器起来也是白等。两条命令验证sudo apt install cpu-checker kvm-ok输出KVM acceleration can be used就通过了。如果报权限问题把当前用户加进 kvm 组sudo usermod -aG kvm $USERmacOS 和 Windows 用户走虚拟机容器内是 Ubuntu 环境macOS / Windows 上直接跑不行需要先起一个支持嵌套虚拟化的 Ubuntu 虚拟机再在虚拟机里装 Docker。Windows 11 的 WSL2 是个例外README 里给了完整开关把用户加进 kvm 组、在/etc/wsl.conf的[boot]段设置/dev/kvm属组再在~/.wslconfig加nestedVirtualizationtrue最后wsl --shutdown重启 WSL2 即可。一条命令拉起第一个模拟器跑通最小命令以 Android 11 三星 Galaxy S10 为例打开 6080 端口就是网页看画面的入口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参数拆开看EMULATOR_DEVICE选机型WEB_VNCtrue开启网页画面--device /dev/kvm把主机的虚拟化能力透传进容器。浏览器打开http://localhost:6080等模拟器启动完成手机桌面就出现在页面上可以直接点按操作。查看模拟器状态docker exec -it android-container cat device_status文件内容更新为booted说明启动完成启动过程一般需要一两分钟。镜像标签和机型怎么选镜像标签对照标签规则很直白budtmo/docker-android:emulator_Android版本也可以带具体发版号emulator_11.0_v2.0锁定精确版本。镜像标签Android 版本API 级别emulator_9.09.028emulator_10.010.029emulator_11.011.030emulator_12.012.032emulator_13.013.033emulator_14.014.034genymotion对接 Genymotion 云设备-内置机型清单EMULATOR_DEVICE可以填的机型共 12 款手机Samsung Galaxy S6 / S7 / S7 Edge / S8 / S9 / S10、Nexus 4 / 5 / One / S平板Nexus 7、Pixel C机型的皮肤和硬件配置文件都在mixins/configs/devices/下皮肤素材取自 Android Studio 和三星开发者站点。以 Galaxy S10 的皮肤为例看到它连上它两种交互方式从浏览器进入Web VNCWEB_VNCtrue之后6080 端口上是一个 noVNC 网页URL 参数能进一步控制访问行为autoconnecttrue打开页面直接连进会话view_onlytrue只看不点适合只读演示passwordxxx配合VNC_PASSWORD环境变量做密码访问不想开浏览器也可以直接用 VNC 客户端连容器的 5900 端口同样受VNC_PASSWORD保护。详见 VNC 配置说明。从宿主机用 adb 接入把 adb 端口映射出来宿主机就能像连真机一样连容器里的模拟器docker run ... -p 5554:5554 -p 5555:5555 ... adb connect docker-machine-ip:5555连上之后adb install、adb logcat全部照常用。完整步骤见 宿主机控制模拟器。调优与持久化三个高频参数环境变量作用示例值EMULATOR_DATA_PARTITION数据分区大小默认 550m1024mEMULATOR_NO_SKIN不加载皮肤少一点渲染开销trueEMULATOR_ADDITIONAL_ARGS追加任意模拟器命令行参数-gpu autoEMULATOR_ADDITIONAL_ARGS是个万能口Android 官方 emulator 命令行支持的所有参数都能从这里透传进去不需要改镜像。另外设WEB_LOGtrue可以在 9000 端口可用WEB_LOG_PORT改通过网页看容器内日志。让数据活过容器重启默认行为是容器一停模拟设备就销毁。挂一个卷到/home/androidusr就能保留装好的应用和用户数据docker run -v data:/home/androidusr budtmo/docker-android:emulator_11.0下次启动同一个卷应用和设置都还在。一个容器跑起来之后的更多玩法Appium 和 CI 流水线镜像内置 Appium Server加-p 4723:4723 -e APPIUMtrue即可用还能通过APPIUM_ADDITIONAL_ARGS追加参数。UI 测试的完整示例见 Appium 用法。接 Jenkins 时配合 VNC 预览插件还能在流水线页面里直接看到模拟器实时画面。给模拟器发一条测试短信验证短信接收功能不用借真机容器里直接下发docker exec -it android-container adb emu sms send 123456 hello部署到云容器上云的前提是宿主机支持嵌套虚拟化Azure 选 Dv3 / Ev3 系列AWS 用裸金属实例 i3.metalGCP 给实例开 nested virtualization。各平台的确认清单见 云部署文档。如果不想自己维护模拟设备genymotion标签还能直接对接 Genymotion 的 SaaS 和 AWS 镜像。常见故障点速查⚠️ 按出现频率排个序kvm-ok报 KVM 不可用 —— BIOS 里开 VT-x / AMD-V或者把用户加进 kvm 组后重新登录容器起来了但 6080 打不开 —— 确认启动命令带了-e WEB_VNCtrue且-p 6080:6080没被别的进程占用device_status一直停在启动中 —— 给容器分配至少 2GB 内存模拟器启动慢多半是资源不够数据分区装不下应用 —— 用EMULATOR_DATA_PARTITION调大默认只有 550mWSL2 下/dev/kvm权限错误 —— 按 README 的 WSL2 章节设置[boot]命令和nestedVirtualizationtrue更多材料可以读自定义配置全集VNC、日志、模拟器参数的完整列表Genymotion 云对接SaaS / AWS 两种方式启动云设备docker-android-pro 说明付费版功能对照代理、多模拟器、录屏等机型皮肤目录12 款机型的皮肤与硬件配置【免费下载链接】docker-androidAndroid in docker solution with noVNC supported, video recording and mcp server项目地址: https://gitcode.com/GitHub_Trending/do/docker-android创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考