Docker-Android 是一个专为 Android 相关的一切而构建的 docker 镜像。它可用于应用程序开发和测试(原生、网页和混合应用)。
使用本项目的优势
- 支持不同设备配置和外观的模拟器,如三星 Galaxy S6、LG Nexus 4、HTC Nexus One 等。
- 支持 VNC,可以查看 docker 容器内部的情况。
- 支持日志共享功能,所有日志可通过 Web 界面访问。
- 能够通过 adb connect 从容器外部控制模拟器。
- 与其他云解决方案集成,如 Genymotion Cloud。
- 可用于构建 Android 项目。
- 可用于运行不同测试框架的单元测试和 UI 测试,如 Appium、Espresso 等。
Docker 镜像列表
Android | API | 最新发布版本镜像 | 特定发布版本镜像 |
---|---|---|---|
9.0 | 28 | budtmo/docker-android:emulator_9.0 | budtmo/docker-android:emulator_9.0_<发布版本> |
10.0 | 29 | budtmo/docker-android:emulator_10.0 | budtmo/docker-android:emulator_10.0_<发布版本> |
11.0 | 30 | budtmo/docker-android:emulator_11.0 | budtmo/docker-android:emulator_11.0_<发布版本> |
12.0 | 32 | budtmo/docker-android:emulator_12.0 | budtmo/docker-android:emulator_12.0_<发布版本> |
13.0 | 33 | budtmo/docker-android:emulator_13.0 | budtmo/docker-android:emulator_13.0_<发布版本> |
14.0 | 34 | budtmo/docker-android:emulator_14.0 | budtmo/docker-android:emulator_14.0_<发布版本> |
- | - | budtmo/docker-android:genymotion | budtmo/docker-android:genymotion_<发布版本> |
设备列表
类型 | 设备名称 |
---|---|
手机 | 三星 Galaxy S10 |
手机 | 三星 Galaxy S9 |
手机 | 三星 Galaxy S8 |
手机 | 三星 Galaxy S7 Edge |
手机 | 三星 Galaxy S7 |
手机 | 三星 Galaxy S6 |
手机 | Nexus 4 |
手机 | Nexus 5 |
手机 | Nexus One |
手机 | Nexus S |
平板 | Nexus 7 |
要求
- 系统中已安装 Docker。
快速开始
-
如果您的主机使用 Ubuntu 操作系统,可以跳过此步骤。对于 OSX 和 Windows 操作系统 用户,您需要使用支持虚拟化的虚拟机并安装 Ubuntu 操作系统,因为该镜像仅能在 Ubuntu 操作系统 下运行。
-
您的机器应支持虚拟化。检查是否启用虚拟化的方法是:
sudo apt install cpu-checker kvm-ok
-
运行Docker-Android容器
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
-
检查模拟器状态
docker exec -it android-container cat device_status
数据持久化
默认情况下,容器重启时会销毁模拟设备。要持久化数据,需要在/home/androidusr
挂载一个卷:
docker run -v data:/home/androidusr budtmo/docker-android:emulator_11.0
WSL2硬件加速(仅限Windows 11)
感谢Guillaume - The Parallel Interface博客
-
将自己添加到
kvm
用户组。sudo usermod -a -G kvm ${USER}
-
在
/etc/wsl2.conf
的相应部分添加必要的标志。[boot] command = /bin/bash -c 'chown -v root:kvm /dev/kvm && chmod 660 /dev/kvm' [wsl2] nestedVirtualization=true
-
通过CMD提示符或Powershell重启WSL2
wsl --shutdown
command = /bin/bash -c 'chown -v root:kvm /dev/kvm && chmod 660 /dev/kvm'
在WSL2启动时将/dev/kvm
设置为kvm
用户组,而不是默认的root
用户组。
nestedVirtualization
标志仅适用于Windows 11。
使用案例
自定义配置
这份文档包含了可用于启用某些功能的配置信息,例如日志共享等。
Genymotion
对于那些没有资源维护模拟器或购买机器或需要不同设备配置的人,可以尝试使用Genymotion SAAS。Docker-Android在不同的云服务上与Genymotion集成,例如Genymotion SAAS、AWS、GCP、阿里云。更多详情请参阅此文档。
模拟器皮肤
模拟器皮肤来自Android Studio IDE和Samsung开发者网站
用户
专业版
由于大量的帮助请求以及为了能够积极维护项目,创建者决定推出docker-android-pro。Docker-Android-Pro是一个基于赞助的项目,这意味着只有活跃的赞助者才能拉取专业版的docker镜像。
普通版本和专业版本的区别是:
功能 | 普通版 | 专业版 | 备注 |
---|---|---|---|
用户行为分析 | 是 | 否 | - |
代理 | 否 | 是 | 可在运行中为Android模拟器设置公司代理 |
语言 | 否 | 是 | 可在运行中为Android模拟器设置语言 |
Root权限 | 否 | 是 | 能够以安全特权运行命令 |
无头模式 | 否 | 是 | 通过使用无头模式节省资源 |
Selenium 4.x 集成 | 否 | 是 | 可通过一个Selenium Hub端点运行针对Android和iOS模拟器/设备的Appium UI测试 |
多个Android模拟器 | 否 | 即将推出 | 通过在一个Docker容器中运行多个Android模拟器来节省资源 |
Google Play商店 | 否 | 即将推出 | - |
视频录制 | 否 | 即将推出 | 有助于调试 |
本文档包含了如何使用docker-android-pro的详细信息。
许可证
参见许可证