移动端Web开发调试之Weinre调试教程
Weinre(WebInspector Remote)是一款基于Web Inspector(Webkit)的远程调试工具,借助于网络,可以在PC上直接调试运行在移动设备上的远程页面,中文意思是远程Web检查器,有了Weinre,在PC上可以即时修改目标网页的HTML/CSS/Javascript,调试过程可实时显示移动设备上页面的预览效果,并同步显示设备页面的错误和警告信息,可以查看网络资源的信息,不过weinre不支持断点调试。该项目目前是 Apache Cordova 的一部分。
weinre工作原理
两张图读懂Weinre的工作机制:
上述三层结构示意图的含义:
Debug客户端(client):本地的WebInspector,远程调试客户端。
Debug服务端(agent):本地的HTTPServer,为Debug目标页面与Debug客户端建立通信。
Debug目标页面(target):被调试的页面,页面已嵌入weinre的远程js。
客户端、目标页面与Debug服务端之间使用XMLHttpRequest (XHR)进行HTTP通信,你通常的使用情形是将Debug客户端与服务端搭建在桌面开发环境,Debug目标页面放在移动设备。
由于Weinre的debug客户端是基于Web Inspector开发,而Web Inspector只兼容WebKit核心的浏览器,所以只能在Chrome/Safari浏览器打开Weinre客户端进行调试。
我在Chrome 38/39版本测试时打开Debug客户端出现页面白板,原因未知,了解原因的欢迎留言给我。换为Safari浏览器打开则正常。
Weinre系统支持性
iOS 3.1.3或更低版本不支持
webOS 1.45或更早版本不支持
Debug客户端支持的平台
weinre的Mac程序(自带客户端) - Mac OSX 10.6 64-bit
Google Chrome 8及以上版本浏览器
Apple Safari 5及以上版本浏览器
Debug目标页面支持的平台
Android 2.2+系统浏览器
Android 2.2+ 中的phonegap
iOS 4+ 的safari浏览器
BlackBerry v6.x 模拟器
webOS
chrome8+
safari5+
关于Weinre的Java版本下载地址无法访问的问题,借用skyhh同学的话,是由于weinre被PhoneGap收购,PhoneGap又被Adobe收购,Adobe收购PhoneGap后,把PhoneGap捐给了Apache,Apache把PhoneGap放在Cordova的项目中。Weinre也从最初的Java移植到了当前的JavaScript。在GitHub上搜索weinre的结果中前两个就是官方的Weinre项目。
先说第二个项目,是Apache后来推出的JavaScript版本weinre,需要在nodejs环境下安装使用,使用npm包管理工具也可以直接下载安装。
安装与服务启动命令如下:
[plain] view plain copy
- npm -g install weinre //安装weinre
- weinre --boundHost [hostname | ip address |-all-] --httpPort [port] //启动weinre
机器上有nodejs开发环境的同学到此即配置完毕,没有nodejs环境的继续往下看。
第一个项目pmuellr/weinre是Java版的,目前项目已经转移到 http://people.apache.org/~pmuellr/weinre/
进入后找到二进制jar包的非官方打包地址 http://people.apache.org/~pmuellr/weinre/builds/
进入后找到1.6.1版本下载解压得到weinre.jar即可使用。
直接贴出1.6.1版本的jar包下载地址:http://people.apache.org/~pmuellr/weinre/builds/1.x/1.6.1/
其余的项目有的是Grunt下的解决方案,感兴趣的可GitHub自行查看。
安装Java版本的weinre需要有Java开发环境。
首先安装JDK,并设置环境变量。
新建系统变量JAVA_HOME,设为安装目录D:\Program Files\Java\jdk1.6.0_43
新建/编辑系统变量classpath,设置为.;%JAVA_HOME%\lib;(注意前面的点与分号)
新建/编辑系统变量Path,设为;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
然后打开命令提示符,输入java –version 如果出现版本号,则表示安装配置正确。
然后进入weinre的解压路径,在命令提示符窗口运行以下命令:
[plain] view plain copy
- java -jar weinre.jar --httpPort 8910--boundHost -all-
然后在Safari浏览器地址栏输入http://localhost:8910/,若打开如下所示页面,则表明weinre服务启动成功。
说明:weinre默认使用8080端口,服务器主机名默认使用localhost,需要修改可在上述命令中进行设置,比如可以绑定为开发机器的内网IP地址。为了能在本地使用localhost打开,又能在移动设备或本地环境用IP地址打开Weinre调试工具,我们需要设置boundHost为"-all-",同时要确保调试页面所在设备与当前开发环境(包括Debug客户端和Debug服务端)都处于同一网段内。Weinre绑定端口一定不能与本地环境已监听的端口冲突,确保绑定的是闲置端口,例如我设置的是8910。
Weinre还提供了下面的启动参数:
--help : 显示Weinre的Help
--httpPort [portNumber] : 设置Weinre使用的端口号, 默认是8080
--boundHost [hostname| ip address | -all-] : 默认是'localhost', 这个参数是为了限制可以访问Weinre Server的设备, 设置为-all-或者指定ip, 那么任何设备都可以访问Weinre Server。
--verbose [true | false] : 如果想看到更多的关于Weinre运行情况的输出, 那么可以设置这个选项为true, 默认为false;
--debug [true | false] : 这个选项与--verbose类似, 会输出更多的信息。默认为false。
--readTimeout [seconds] : Server发送信息到Target/Client的超时时间, 默认为5s。
--deathTimeout [seconds] : 默认为3倍的readTimeout, 如果页面超过这个时间都没有任何响应, 那么就会断开连接。
更多参数可以访问http://people.apache.org/~pmuellr/weinre/docs/latest/Running.html
MAC OS X系统更为简便,无须命令行,直接运行app即可启动weinre,后续的步骤和windows相同。
Debug服务端所在的内网IP地址可以在命令提示符中输入ipconfig命令查看
然后我们使用服务端所在IP地址加端口访问:http://本地ip:Port
例如:http://192.8.104.20:8910/,如下图所示
TargetScript
将上图中Target Script部分的js地址加入到你要调试的目标页面内。例如:
<script src="http://192.8.104.20:8910/target/target-script-min.js#anonymous"></script>
然后在移动设备打开添加过这个脚本的网页,例如我的页面放在本地环境并使用端口8888监听,所以在移动端浏览器需要输入:
。并在桌面环境Safari浏览器打开Debug 客户端用户接口。如下图:
http://192.8.104.20:8888/newyear2015/crack.html
如果桌面电脑用USB数据线连接了移动设备,但Debug客户端依然显示为weinre:targetnot connected,如下图所示:
这时你可以尝试以下方法:
1. 检查是否通过USB数据线连接成功(安装驱动)。
2. 检查Debug客户端桌面环境是否和移动设备处于同一个局域网网段,尤其是WiFi方式上网的情况,一定要防止Wifi自动连接到其他网络中。
3. 尝试将Target Script 脚本放在html文件的尾部。
4. 检查Debug调试客户端用户接口的Client id是否与目标页面内target script 中的client id一致。
Target Bookmarklet
使用此方法可以将标签中的代码注入到目标页面代码中。以下是JavaScript代码段:
javascript:(function(e){e.setAttribute("src","http://192.8.104.20::8910/target/target-script-min.js#anonymous");document.getElementsByTagName("body")[0].appendChild(e);})(document.createElement("script"));void(0);
该代码段可以通过在手机端浏览器访问对应的url方式获取。例如这里是:
http://192.8.104.20:8910/target/target-script-min.js
然后保存为设备书签中。
以后如果需要调试页面,打开页面后,点击Debug书签就可以在桌面环境开始调试了。
PhoneGapWebApp调试
PhoneGap WebApp也就是运行在移动设备Webview之内(Android:webview,iOS:uiwebview)的移动应用,因此weinre调试只需要在要调试的目标页面中加入weinre脚本代码即可。
另外可以安装使用GapDebug应用,GapDebug是一款跨平台的移动设备调试工具,支持拖拽式一键安装,支持重启App后Debug状态恢复,支持断点调试,支持Windows和Mac OS系统,官方地址
https://www.genuitec.com/products/gapdebug/
多用户调试
Debug客户端用户接口#号后是一个调试客户端的id,用于在多用户调试时,识别各自不同的调试项目。
在同一局域网的网段内,大家可以共享weinre调试环境。有一台电脑作为Debug服务器,其他成员只需要一个自己的client id就可以在自己的电脑上开始真机调试了。使用方法同上,这里不再赘述。
Debug客户端中调试方法
如果调试设备连接成功,会显示如下状态:
Elements面板
可以修改html和CSS代码,无须刷新页面,即可在目标设备页面上实时预览效果。
Resources面板
包括Databases、Local Storage和Session Storage信息,若目标页面用到了缓存,则可以在此看到数据。
Network面板
由于weinre是基于XMLHttpRequest进行监听的,所以网络面板只显示通过XML HTTPRequest的请求加载的数据,也就是Ajax方式加载的资源。
Timeline面板
Console面板
第三方Weinre服务
技术团队可以按照上述步骤搭建一个本地的weinre调试环境,供团队内部使用。除了自建weinre服务器,也可以使用第三方提供的weinre服务。
目前国外的有PhoneGap提供的weinre远程服务,用户可以访问下述网址参看用户远程调试接口
http://debug.build.phonegap.com/
方法和上面自建weinre服务没什么区别,这里就不多说了。
其他调试工具
除了介绍过的Chrome 远程调试工具DevTools、weinre远程调试,目前的还有Adobe公司推出的跨平台调试工具Adobe Edge Inspect CC,以及国内网易前端工程师@听奏同学开发的iOS系统专用调试工具MIHTool,也是功能很强大的。这里不一一介绍了。
转载于:https://my.oschina.net/u/2558718/blog/739959
移动端Web开发调试之Weinre调试教程相关推荐
- 轻松掌握移动端web开发【尺寸适配】常用解决方案
本文主要针对初学移动端web开发的读者,笔者也是初学者,文中有众多用词不当之处望读者指正. 前言 从开始做web app开发到现在,一直对移动端的尺寸适配有一种模糊的概念.能说得上来'媒体查询','栅 ...
- 移动端Web开发小记
之前为公司商旅频道写移动端的页面时遇到不少问题,今特来个总结,希望能为后来者带来一些帮助. 不再考虑浏览器兼容性 移动端开发主要对象是手持设备,其中绝大部分是IOS和Android系统,so,在开发此 ...
- 移动端--web开发
最近看到群里对关于 移动端 web开发很是感兴趣,决定写一个关于 移动端的web开发 概念或框架(宝庆对此很是纠结).也是因为自己一直从事pc 浏览器 web一直对 移动端的不是很重视,所以趁此机会也 ...
- 蓝旭前端开发:GITtomcat+nginx原理移动端web 开发
蓝旭前端开发:GIT+移动端 web 开发 目录 一.==GIT== 1.1 ==Git与GitHub== 1.2 ==GitHub注册和Git的下载安装== 二.==Git的使用== 2.1 ==本 ...
- 移动端Web开发 基础知识
文章目录 移动端Web开发 移动端基础 浏览器 视口 样式编写 分辨率和设备像素比 二倍图 SVG矢量图 移动端Web开发 移动Web开发的两种主流方案,一种是单独制作移动端页面,另一种是制作响应式页 ...
- 移动端 Web 开发
(八)移动端 Web 开发 1. 移动端基础 1.1 浏览器现状 PC端常见浏览器 360浏览器.谷歌浏览器.火狐浏览器.QQ浏览器.百度浏览器.搜狗浏览器.IE浏览器. 移动端常见浏览器 UC浏览器 ...
- 移动端web开发布局简单介绍(一)之移动端基础
移动端web开发布局简单介绍(一)之移动端基础 1.0移动端基础 随着技术的发展,现在Web前端行业需要掌握的技能越多,移动端的兴起.这里就简单介绍介绍关于移动端Web开发的几个布局. 1.1当前浏览 ...
- 移动端web开发分享
移动端web开发浪潮兴起之时,千呼万唤shi出来,在团队内部做的一个分享,以下是写ppt时列出的摘要,时间-2013/09/20 I.前端这个行当 a.发展史 b.前端基本技能介绍(html css ...
- 移动端 Web 开发踩坑之旅
前言 最近在一个移动端的 Web 项目中踩了很多的坑,感觉有必要把它们记录下来,分享给即将踏入移动端 Web 开发大门的新人们. 一.从布局说起 移动端的整体布局一般来说可以分为上中下三个部分,分别为 ...
- 移动端Web开发如何处理横竖屏
<!Doctype html> <html> <head> <meta charset="utf-8"> <meta id=& ...
最新文章
- android设置控件的坐标,Android中使PopupWindow显示在指定控件的上下左右!
- 【编译打包】twemproxy-0.4.0-2.el7.centos.src.rpm
- 关于高阶导数的一个不等式估计
- 我的python渗透测试工具箱之自制netcat
- SAP中查询用户操作日志的事务码
- 去超市一定要存包吗_大桥路某超市收银时出现多收现象!大家付完钱一定要核对...
- 剑指Offer——链表中倒数第K个节点
- Windows 2000命令行如何查看进程PID和杀进程
- 戴尔推出PowerEdge T30,主打小型办公和家庭办公市场
- UIWindow的rootViewController的问题
- java中实例化代码块_Java面向对象--代码块(初始化块)和内部类
- 调用百度识图api实现识图vue+springboot
- 京东h5移动端适配(REM)
- MySQL - redolog 图文详解
- 抖音设备注册生成device_id与install_id hook分析记录
- codewars练习(javascript)-2021/2/18
- 怎么查找计算机的内存卡,如何查看自己电脑的内存卡的牌子?
- 喜马拉雅主播工具软件:图片OCR文字识别自动转成mp3高品质语音文件
- Vue3中TSX和h函数的用法
- 解决Chaquopy在AS中pip安装过慢的问题
热门文章
- 智能聊天机器人小黄鸡
- ckeditorsmartupload
- WGS84经纬度坐标到北京54高斯投影坐标的转换
- 投了上千简历,是Android岗位需求少?还是我的技术不行
- [华为matepad pro 12.6]实现平板编程(Xfce4篇)(Termux+Ubuntu21.04+Xfce4+VNC)
- 如何使用SonicWALL防火墙封堵TeamViewer
- 我在网吧上网用的QQ给好友狂发病毒
- 知识3.0的how-to:培训课程
- vb.net生成随机数,并且统计生成的个数
- 从零开始搭建自己的个人博客 ---> 手把手教你搭建自己的炫酷博客