5. iOS设备的接入
iOS设备的接入主要依赖libimobiledevice开源包,来实现与Android设备接入类似的功能。主机与设备间的连接命令主要如下。
//获取设备列表
idevice_id -l
//安装apk
ideviceinstaller -i {package_name}
//卸载apk
ideviceinstaller -a {package_name} remove
//端口转发
tcprelay-mutiple.py -t {device_port}:{pc_port}:{device_id}
//获取第三方应用列表
ideviceinstaller -liPhone与虚拟机建立连接同样也是通过消息机制完成,具体的流程与Android手机类似。同样,Perl也对libimobiledevice命令进行了简单的封装,这样便于调用,例如ios forward的封装如下。
# Function:forward
# Description:Execute libimobiledevice forward command
sub ios_forward(){
my $device_request=shift;
my $device_id=$device_request->{requestDevice}->{deviceName};
my $pc_port=$device_request->{forwardPcPort};
my $device_port=$device_request->{forwardDevicePort};
my $websockify_port=$device_request->{websockifyPort};
my $forward_command="nohup tcprelay-mutiple.py -t $device_port:$pc_port:$device_id &";
......
return $coder->encode($result);
}6. noVNC技术的应用
noVNC是HTML5 VNC客户端,采用HTML 5 WebSockets、Canvas和Javascript实现。由于adb和libimobiledevice已经实现了主机与智能设备之间的端口映射,要想使用noVNC只需要将主机映射的端口与websocket需要的端口进行映射。noVNC也为我们提供了这样一个非常实用的工具noVNC/utils/websockify.py。
$ adb -s {deivce_id} forward tcp:9000 tcp:5901 / tcprelay-mutiple.py -t 9000:5900:{device_id}
$ cd /noVNC/utils
$ ./websockify.py 9500 127.0.0.1:9000
WARNING: no 'numpy' module, HyBi protocol is slower or disabled
WebSocket server settings:
- Listen on :8000
- Flash security policy server
- No SSL/TLS support (no cert file)
- proxying from :8000 to localhost:5900这样就可以通过noVNC提供的vnc.html或者vnc_auto.html实现WEB手机控制台。
7. 小结
本篇文章主要提出了一种基本VNC技术的手机云测解决方案,希望以该技术为基础将各类智能终端接入到VMware vSphere环境中,实现移动应用的远程快速测试,大大减少产品的测试成本和测试周期。通过对adb、libimobiledevice、noVNC开源工具包的合理应用,本文搭建出了一个WEB手机控制台,通过页面实时地控制手机的各种操作,使测试效果更加真实、高效。
8. 作者简介
俞超 软件开发工程师
任职于某大型IT外资企业,主要从事J2EE开发、设计工作。
参考资料
http://mobile.51cto.com/aengine-402829.htm
http://developer.android.com/tools/help/adb.html
http://www.libimobiledevice.org/
https://github.com/kanaka/noVNC