拓冰建站拓冰建站
首页 / 资讯中心 / 正文

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 镜像一条docker run就能在服务器上开出 Galaxy S10、Nexus 7 等真机外观的模拟器支持 noVNC 网页查看、Appium UI 测试和 adb 外部控制。适合需要无头环境跑安卓测试、CI 集成或演示的测试工程师、DevOps 和移动端开发者。二、它解决什么问题本机装 Android Studio 模拟器占几 GB 磁盘还得跟 IDE 抢 CPU 和 GPU。CI 机器上想跑 UI 自动化却发现 CI 是 Linux 裸机装模拟器环境又慢又不稳。多台设备、多版本并行测试时本机根本开不起。Docker-Android 的做法是模拟器 Android SDK noVNC adb 全部预装在镜像里按 Android 版本区分 tag9.0 到 14.0拉下来即用跑完删掉不占地方。三、开始前需要准备什么硬件和系统要求如下提前确认可以省掉后面大量排错时间项目要求说明操作系统UbuntuLinux镜像基于 Ubuntu 构建只保证在 Ubuntu 宿主上运行虚拟化CPU 支持 KVM 且已开启容器内模拟器靠硬件加速跑没有 KVM 基本起不来Docker已安装并可正常使用docker run无需其他依赖macOS / Windows需要套一层 Ubuntu 虚拟机官方镜像不支持直接在 Mac/Windows 上跑验证 KVM 是否可用sudo apt install cpu-checker kvm-ok输出KVM acceleration can be used才算通过。四、最短路径跑起来一条命令启动 Android 11.0 Samsung Galaxy S10 模拟器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参数逐个看-d后台运行容器。-p 6080:6080把容器内 noVNC 的 6080 端口映射出来供浏览器访问。-e EMULATOR_DEVICESamsung Galaxy S10指定设备型号和外观皮肤支持 S10/S9/S8/S7/S6、Nexus 4/5/7/One/S、Pixel C 等。-e WEB_VNCtrue启用网页端查看不开就只能用 VNC 客户端连 5900 端口。--device /dev/kvm把宿主机的 KVM 设备透传进容器硬件加速的关键。--name android-container给容器起名后面docker exec、docker stop都靠它。budtmo/docker-android:emulator_11.0镜像 tag按 Android 版本选emulator_9.0到emulator_14.0都有。镜像里预置了这些设备型号的皮肤文件位于 mixins/configs/devices/EMULATOR_DEVICE的值必须和列表里的名字完全一致。等 1~2 分钟首次启动模拟器较慢浏览器打开http://localhost:6080你会看到模拟器桌面上立着一台 Galaxy S10能点能滑。随时查启动进度docker exec -it android-container cat device_status状态变成boot_completed即代表安卓系统启动完成。五、常用配置速查核心开关都是环境变量完整清单见 CUSTOM_CONFIGURATIONS.md。VNC / 网页访问变量作用示例WEB_VNC是否开启网页端默认端口 6080-e WEB_VNCtrueWEB_VNC_PORT改 noVNC 端口-e WEB_VNC_PORT6081配合-p 6081:6081VNC_PASSWORD给 VNC 连接加密码-e VNC_PASSWORDthisissecretURL 上还能加参数http://localhost:6080/?autoconnecttrueview_onlytrue可直接自动连接并设为只读方便给别人看。模拟器本体变量作用默认值EMULATOR_NAME自定义模拟器名字设备名 安卓版本EMULATOR_DATA_PARTITION数据分区大小550m装 app 多就调大如900mEMULATOR_NO_SKIN去掉设备外壳皮肤省一点渲染开销falseEMULATOR_ADDITIONAL_ARGS透传任意参数给 android emulator 命令行见 Android 官方文档日志与测试变量作用WEB_LOG/WEB_LOG_PORT通过网页 UI 看容器内日志文件默认端口 9000APPIUM/APPIUM_ADDITIONAL_ARGS开启 Appium Server开 4723 端口参数可透传数据持久化默认行为是容器重启后模拟器数据清空。需要保留装的 app、账号等状态时把数据目录挂成命名卷docker run -v data:/home/androidusr budtmo/docker-android:emulator_11.0六、跑起来之后能干什么adb 外部控制启动时加-p 5554:5554 -p 5555:5555宿主机执行adb connect 容器IP:5555即可把容器内模拟器当成 adb 设备装 apk、抓日志、发消息全都能做。细节见 USE_CASE_CONTROL_EMULATOR.md。模拟短信docker exec -it android-container adb emu sms send 号码 消息做 OTP 验证测试很方便。见 USE_CASE_SMS.md。CI 集成Jenkins / 云主机上无头跑见 USE_CASE_JENKINS.md 和 USE_CASE_CLOUD.md。Appium UI 测试加-p 4723:4723 -e APPIUMtrue即可见 USE_CASE_APPIUM.md。七、容易踩的坑坑 1容器起不来 / 模拟器卡在启动。九成是 KVM 没透传。先跑kvm-ok确认宿主机支持再确认docker run带了--device /dev/kvm。Windows 用户在 WSL2 里还需要额外配置把用户加进kvm组、在.wslconfig开nestedVirtualizationtrueREADME 的 WSL2 Hardware acceleration 一节有完整步骤。坑 2浏览器打不开localhost:6080。端口映射漏了或端口被占。确认启动命令里有-p 6080:6080端口冲突就换WEB_VNC_PORT一起改两边保持一致。另外WEB_VNCtrue忘了设的话网页入口根本不存在。坑 3重启容器后 app 全没了。这是默认设计每次全新设备不是 bug。要么接受跑完即焚要么按上面数据持久化一节挂卷到/home/androidusr。坑 4装了几个稍大的 app 就 OOM 或分区满。默认数据分区只有 550m用EMULATOR_DATA_PARTITION900m调大即可。延伸阅读仓库内文档都在 documentations/ 目录按使用场景组织USE_CASE_BUILD_ANDROID_PROJECT.md用镜像编译安卓工程USE_CASE_APPIUM.mdAppium 自动化测试接入USE_CASE_CLOUD.md部署到 Azure / AWS / GCPDOCKER-ANDROID-PRO.mdPro 版功能对比代理、root、headless 等CUSTOM_CONFIGURATIONS.md全部可配环境变量与 URL 端点【免费下载链接】docker-androidAndroid in docker solution with noVNC supported, video recording and mcp server项目地址: https://gitcode.com/GitHub_Trending/do/docker-android创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门