Android emulator的模拟器系统在VNC下操作,noVNC

未经同意,禁止转载


Android emulator模拟器是基于Qemu开发的,而Qemu是支持websockets的,就可以做到用qemu做VNC server,把虚拟做远程操作,配合noVNC,就可以达到浏览器进行操作Andorid虚拟机的使用。

新建虚拟机

本想研究libvirt的,但过于复杂,后面有时间再说。所以虚拟机用Android Studio的AVD Manager新建。先成功启动过一次

Android emulator的模拟器系统在VNC下操作,noVNC_第1张图片

然后启动则先查看启动的名称,到SDK下的emulator目录下执行

.\emulator.exe -list-avds

启动虚拟机

启动虚拟机的命令

.\emulator.exe -avd Pixel_2_API_28 -gpu guest -qemu -vnc 127.0.0.1:0

-avd 列表的设备名

-gpu guest 不知道用于什么,提示缺少就补上的

-qemu 用于传递参数给Qemu的,所以使用了Qemu中的参数实现VNC server的。(接在此参数后面的参数都是传递给Qemu的)

       -vnc 设置本机IP和端口,推荐用0.0.0.0:0,端口填写为0时,端口是从5900分配的。

Android emulator的模拟器系统在VNC下操作,noVNC_第2张图片

启动后会出现一个小窗口Android emulator的模拟器系统在VNC下操作,noVNC_第3张图片,最后看到boot completed则说明启动完成

同时看端口,因为填写的是127.0.0.1,所以监听的端口也只出现在127.0.0.1上。

Android emulator的模拟器系统在VNC下操作,noVNC_第4张图片

noVNC启动和使用

下载noVNC,不多介绍。解压文件,进到文件目录下的utils目录下,这需要Linux的shell环境,我用了windows的子系统来启动。后面再研究下可不可以在windows环境下。

Android emulator的模拟器系统在VNC下操作,noVNC_第5张图片

 最后的接的地址应与emulator启动时设置的一致。noVNC启动时会在utils目录里下载websockify(用于代理虚拟机的VNC server)。

而浏览器访问的地址显示在Navigate to this URL下,这实际这是访问websockify的,再由websockify访问虚拟机。

第一次访问可能不直接连上,需要再点击“连线”。才能进入

Android emulator的模拟器系统在VNC下操作,noVNC_第6张图片

在启动系统时连接状态。进入桌面后

Android emulator的模拟器系统在VNC下操作,noVNC_第7张图片

这里鼠标不见了,在画面上就有点摸黑操作,看下以后能不能解决。。。Android emulator的模拟器系统在VNC下操作,noVNC_第8张图片

操作流畅度跟android studio启动出来的小窗一样???反正我感觉的是一样的。


总结:

这主要是为做android的开发远程或者云调试用的(不做android开发的我,为什么整这东西?),看到那些服务器厂商的控制面板都可以浏览器里远程操作windows或linux的,就萌生了在浏览器里操作Android的想法,还真的实现了。实际虚拟机就暴露两个端口就可以远程使用,用户VNC的5900和ADB的5555端口。调试和效果查看都可以不依赖本地虚拟机。

感谢RobertZhou的文章做了些noVNC使用的参考,还有凭token连接的方式没做,有兴趣的可以参考此网友的文章

你可能感兴趣的:(Android)