尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Docker-Android 完整教程:3 步在容器里跑起 Android 模拟器

Docker-Android 完整教程:3 步在容器里跑起 Android 模拟器 Docker-Android 完整教程3 步在容器里跑起 Android 模拟器【免费下载链接】docker-androidAndroid in docker solution with noVNC supported, video recording and mcp server项目地址: https://gitcode.com/GitHub_Trending/do/docker-android写过 Appium 用例的开发者大概都体会过这种折磨本地模拟器吃内存、公司电脑配置拉胯、CI 机器上装个 Android 环境要折腾半天最后测试还经常因为我电脑上是好的而跑挂。Docker-Android 就是冲着这个问题来的——它把 Android 模拟器以及 Appium、VNC 等配套组件整体打包进一个 Docker 镜像里拉个镜像、起个容器模拟器就开始跑了宿主机什么都不用装。这个项目到底帮你做了什么Docker-Android 本质是一组预配置好的 Docker 镜像budtmo/docker-android:*一个容器里同时具备按设备型号配置的 Android 官方模拟器内置 Samsung Galaxy S10/S9/S8/S7/S6、Nexus 4/5/7 等十余套设备 profile 和外观皮肤设备资料在mixins/configs/devices/下可以翻到基于 noVNC 的网页版 VNC浏览器打开就能看到模拟器屏幕不用装 VNC 客户端内置 Appium 服务开一个端口就能接自动化框架支持从宿主机adb connect直连容器里的模拟器还能模拟收短信镜像按 Android 版本分了 tag按需拉取即可AndroidAPI镜像 tag9.028budtmo/docker-android:emulator_9.011.030budtmo/docker-android:emulator_11.013.033budtmo/docker-android:emulator_13.014.034budtmo/docker-android:emulator_14.0此外还有一个budtmo/docker-android:genymotion镜像用于对接 Genymotion 云上的虚拟设备。运行前确认 3 个前提1. 宿主机装了 Dockerdocker --version看一眼即可。2. 硬件虚拟化可用。模拟器的性能命脉是 KVMLinux 上可以用 cpu-checker 快速验证sudo apt install cpu-checker kvm-ok输出 OK 就稳了如果报 no KVM先去 BIOS/云主机配置里开虚拟化。3. 系统是 Ubuntu或等价 Debian 系。镜像目前只能在 Ubuntu 环境里跑。macOS 和 Windows 用户要么开一个 Ubuntu 虚拟机要么走 Windows 11 的 WSL2需要在.wslconfig里开nestedVirtualizationtrue并把/dev/kvm的权限修好具体步骤见 README 的 WSL2 Hardware acceleration 一节。最快跑通一条命令起容器下面这条命令会拉取 Android 11 镜像指定三星 Galaxy S10 设备开启网页 VNC并把/dev/kvm挂进容器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几个关键点--device /dev/kvm别省没有它模拟器会慢到没法用-p 6080:6080是网页 VNC 的端口EMULATOR_DEVICE换成表里其他设备名即可换机型起好后浏览器打开http://localhost:6080能看到模拟器屏幕就说明环境通了。模拟器的状态还落了一个device_status文件在容器里随时可以查docker exec -it android-container cat device_status看见它、控制它网页直接看。除了上面 6080 端口的网页 VNC容器里 5900 端口跑着原生 VNC用本地任意 VNC 客户端连-p 5900:5900出来的端口也行。网页端还支持几个查询参数/?autoconnecttrue自动连上加view_onlytrue变成只读旁观加passwordxxx可走密码密码通过环境变量VNC_PASSWORD设置。宿主机 adb 直连。把 5554/5555 两个端口映射出来宿主机上执行adb connect 容器IP:5555之后宿主机上的adb命令装包、截图、抓日志就都能作用到容器里的模拟器了本地 IDE 调试不需要任何改动。模拟一条短信。验证应用的短信通知逻辑时不用真机发短信docker exec -it android-container adb emu sms send 13800000000 验证码 888888从单机到生产四个实战方向Appium 自动化测试。加两个参数-p 4723:4723 -e APPIUMtrueAppium Server 就在容器里随容器启动Appium 2.x 还可以不加任何配置直接挂进 Selenium Grid 4.x。额外参数走APPIUM_ADDITIONAL_ARGS传。详见 documentations/USE_CASE_APPIUM.mdJenkins 流水线。配合 VNC 预览插件可以在 CI 页面里直接看模拟器画面失败排查不再靠猜。详见 documentations/USE_CASE_JENKINS.md云部署。注意云平台对嵌套虚拟化的要求Azure 要选 Dv3/Ev3 系列虚机AWS 建议用 i3.metal 裸金属GCP 需开启嵌套虚拟化。详见 documentations/USE_CASE_CLOUD.mdGenymotion 云端设备。不想自己扛虚拟化资源的团队可以直接用genymotion镜像对接 Genymotion SaaS / AWS 上的虚拟设备通过DEVICE_TYPEgeny_saas等环境变量加一个设备模板 JSON 文件示例在example/genymotion/里驱动详见 documentations/THIRD_PARTY_GENYMOTION.md常见坑与排查思路容器起来后模拟器特别慢 / 起不来。九成是 KVM 没生效lsmod | grep kvm看内核模块在不在再确认docker run带了--device /dev/kvm。数据留不住。默认行为是容器销毁时模拟设备数据一起销毁。要保留应用数据挂个卷到用户目录-v android_data:/home/androidusr重启后设备状态还在。想改模拟器参数。常用的是EMULATOR_NAME设备名、EMULATOR_DATA_PARTITION数据分区大小默认 550m装大包容易满、EMULATOR_NO_SKIN去掉外观皮肤省点渲染开销更细粒度的可以整体覆盖模拟器 ini 配置文件方法都写在 documentations/CUSTOM_CONFIGURATIONS.md 里。想看日志但容器没暴露终端。开-e WEB_LOGtrue容器 9000 端口会有个 Web 界面直接浏览容器内的日志文件对 CI 场景特别省事。写在最后Docker-Android 的价值不在多了一个模拟器而在于把 Android 测试环境变成了一条可复制、可丢弃的docker run命令本地开发、Appium 自动化、Jenkins 流水线、云端弹性扩容用的是同一套东西。先按上面的最小命令跑通 11.0 Galaxy S10 这一套再按需叠加 Appium、日志分享这些开关基本就能覆盖大部分团队的需求了。【免费下载链接】docker-androidAndroid in docker solution with noVNC supported, video recording and mcp server项目地址: https://gitcode.com/GitHub_Trending/do/docker-android创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表