可以在Docker中创建安卓模拟器吗?答案是可以。
docker-android
是一个开源项目,可以在Docker下运行带有Android模拟器的容器,虽然当前仅限x86架构的。
Github地址: https://github.com/budtmo/docker-android
特点
- x86架构模拟器;
- 需要kvm支持、虚拟化支持;
- 嵌套虚拟化会非常慢,没法用。裸机Linux上运行非常快,Samsung Galaxy S6 with Android8 进入桌面只需要30秒左右;
- 支持浏览器VNC连接
http://ip:6080
; - 支持adb连接
adb connect ip:5555
; - 内存占用5G左右;
- 自带Appium、Python、Node、Java,版本不高;
- 无需可视化界面也可以执行自动化测试任务,如Appium;
要想顺畅地使用这个容器做Android模拟器,硬件一定要跟的上:
- CPU支持并开启虚拟化,最好8代i3以上Intel的桌面CPU;
- 内存16G以上;
- 固态硬盘。
常用脚本
- 创建Docker容器
docker run --privileged -d -p 6080:6080 -p 5554:5554 -p 5555:5555 -p 4723:4723 -e DEVICE="Samsung Galaxy S6" --name android1 budtmo/docker-android-x86-8.1
- 开启appium服务,可跨域,指定4723端口,指定某个设备。容器内执行:
appium --allow-cors -p 4723 -U ip:5555 > /dev/null 2>&1 &
推荐机型和系统
主要基于启动速度和流畅性考虑,运行在i5-4590/16G内存/256G SSD的机器上。下面两个最快:
- Samsung Galaxy S6 & Android 8.1 35S 474*839
- Galaxy Nexus & Android 8.1 35S
下面几个勉强可用,可做备选,硬件好的话会快点
- Samsung Galaxy S7 & Android 8.1 40S 1440*2560
- Samsung Galaxy S8 & Android 8.1 40S
- Nexus 7 & Android 8.1 40S
- Nexus 6 & Android 8.1 45S
其它的,基本上没法用了。
- Samsung Galaxy S6 & Android 9.0 50S
- Samsung Galaxy S7 & Android 9.0 65S
- Samsung Galaxy S8 & Android 9.0 70S