基于新版Android SDK,如何为无头模拟器启用VNC?Jenkins测试场景
如何为新版Android SDK的无头Ranchu模拟器启用VNC(适配Jenkins插桩测试)
我之前在搭建Jenkins Android自动化测试环境时,刚好碰到过一模一样的需求——给无头运行的Ranchu模拟器开VNC,方便调试插桩测试的执行情况。其实Ranchu虽然是Android定制的模拟器架构,但它底层还是基于QEMU的,所以VNC参数依然能用,只是需要用正确的方式传递给底层QEMU进程,下面是具体的配置步骤和修改后的命令:
1. 先创建目标AVD(和你原来的命令一致)
先指定要使用的系统镜像包,然后创建名为test的AVD:
export ANDROID_PACKAGE="system-images;android-25;google_apis;armeabi-v7a" echo "no" | avdmanager create avd -f -k $ANDROID_PACKAGE -n test -b google_apis/armeabi-v7a
2. 启动带VNC支持的无头模拟器
新版Android模拟器不会直接识别裸的QEMU参数,所以需要通过-qemu选项把VNC参数转发给底层的QEMU进程。修改后的启动命令如下:
emulator64-arm -avd test -noaudio -no-window -ranchu -gpu off -verbose -qemu -vnc :0
这里的-vnc :0就是告诉QEMU在5900端口开启VNC服务(:0对应端口5900,:1对应5901,以此类推),你可以根据服务器的端口占用情况调整这个数字。
一些实用的注意事项
- 端口验证:启动模拟器后,可以用
netstat -tulpn | grep 5900(Linux环境)来确认VNC端口是否已经正常监听。 - VNC连接:用任意VNC客户端(比如RealVNC、TigerVNC)连接
你的Jenkins服务器IP:5900,就能看到无头模拟器的实时画面了,方便调试插桩测试的执行过程。 - Jenkins环境适配:如果是在Jenkins容器或虚拟机中运行,要确保5900端口已经开放,或者通过Jenkins的端口映射配置让VNC客户端能访问到这个端口。
- 性能优化:你原来的命令里已经加了
-noaudio、-no-window、-gpu off,这些都是CI环境下无头运行的最优配置,能减少资源占用。
内容的提问来源于stack exchange,提问作者narfman0
相关产品推荐
相关产品推荐

