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

  1. npm -g install weinre  //安装weinre
  2. 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

  1. 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调试教程相关推荐

  1. 轻松掌握移动端web开发【尺寸适配】常用解决方案

    本文主要针对初学移动端web开发的读者,笔者也是初学者,文中有众多用词不当之处望读者指正. 前言 从开始做web app开发到现在,一直对移动端的尺寸适配有一种模糊的概念.能说得上来'媒体查询','栅 ...

  2. 移动端Web开发小记

    之前为公司商旅频道写移动端的页面时遇到不少问题,今特来个总结,希望能为后来者带来一些帮助. 不再考虑浏览器兼容性 移动端开发主要对象是手持设备,其中绝大部分是IOS和Android系统,so,在开发此 ...

  3. 移动端--web开发

    最近看到群里对关于 移动端 web开发很是感兴趣,决定写一个关于 移动端的web开发 概念或框架(宝庆对此很是纠结).也是因为自己一直从事pc 浏览器 web一直对 移动端的不是很重视,所以趁此机会也 ...

  4. 蓝旭前端开发:GITtomcat+nginx原理移动端web 开发

    蓝旭前端开发:GIT+移动端 web 开发 目录 一.==GIT== 1.1 ==Git与GitHub== 1.2 ==GitHub注册和Git的下载安装== 二.==Git的使用== 2.1 ==本 ...

  5. 移动端Web开发 基础知识

    文章目录 移动端Web开发 移动端基础 浏览器 视口 样式编写 分辨率和设备像素比 二倍图 SVG矢量图 移动端Web开发 移动Web开发的两种主流方案,一种是单独制作移动端页面,另一种是制作响应式页 ...

  6. 移动端 Web 开发

    (八)移动端 Web 开发 1. 移动端基础 1.1 浏览器现状 PC端常见浏览器 360浏览器.谷歌浏览器.火狐浏览器.QQ浏览器.百度浏览器.搜狗浏览器.IE浏览器. 移动端常见浏览器 UC浏览器 ...

  7. 移动端web开发布局简单介绍(一)之移动端基础

    移动端web开发布局简单介绍(一)之移动端基础 1.0移动端基础 随着技术的发展,现在Web前端行业需要掌握的技能越多,移动端的兴起.这里就简单介绍介绍关于移动端Web开发的几个布局. 1.1当前浏览 ...

  8. 移动端web开发分享

    移动端web开发浪潮兴起之时,千呼万唤shi出来,在团队内部做的一个分享,以下是写ppt时列出的摘要,时间-2013/09/20 I.前端这个行当 a.发展史 b.前端基本技能介绍(html css ...

  9. 移动端 Web 开发踩坑之旅

    前言 最近在一个移动端的 Web 项目中踩了很多的坑,感觉有必要把它们记录下来,分享给即将踏入移动端 Web 开发大门的新人们. 一.从布局说起 移动端的整体布局一般来说可以分为上中下三个部分,分别为 ...

  10. 移动端Web开发如何处理横竖屏

    <!Doctype html> <html> <head> <meta charset="utf-8"> <meta id=& ...

最新文章

  1. android设置控件的坐标,Android中使PopupWindow显示在指定控件的上下左右!
  2. 【编译打包】twemproxy-0.4.0-2.el7.centos.src.rpm
  3. 关于高阶导数的一个不等式估计
  4. 我的python渗透测试工具箱之自制netcat
  5. SAP中查询用户操作日志的事务码
  6. 去超市一定要存包吗_大桥路某超市收银时出现多收现象!大家付完钱一定要核对...
  7. 剑指Offer——链表中倒数第K个节点
  8. Windows 2000命令行如何查看进程PID和杀进程
  9. 戴尔推出PowerEdge T30,主打小型办公和家庭办公市场
  10. UIWindow的rootViewController的问题
  11. java中实例化代码块_Java面向对象--代码块(初始化块)和内部类
  12. 调用百度识图api实现识图vue+springboot
  13. 京东h5移动端适配(REM)
  14. MySQL - redolog 图文详解
  15. 抖音设备注册生成device_id与install_id hook分析记录
  16. codewars练习(javascript)-2021/2/18
  17. 怎么查找计算机的内存卡,如何查看自己电脑的内存卡的牌子?
  18. 喜马拉雅主播工具软件:图片OCR文字识别自动转成mp3高品质语音文件
  19. Vue3中TSX和h函数的用法
  20. 解决Chaquopy在AS中pip安装过慢的问题

热门文章

  1. 智能聊天机器人小黄鸡
  2. ckeditorsmartupload
  3. WGS84经纬度坐标到北京54高斯投影坐标的转换
  4. 投了上千简历,是Android岗位需求少?还是我的技术不行
  5. [华为matepad pro 12.6]实现平板编程(Xfce4篇)(Termux+Ubuntu21.04+Xfce4+VNC)
  6. 如何使用SonicWALL防火墙封堵TeamViewer
  7. 我在网吧上网用的QQ给好友狂发病毒
  8. 知识3.0的how-to:培训课程
  9. vb.net生成随机数,并且统计生成的个数
  10. 从零开始搭建自己的个人博客 ---> 手把手教你搭建自己的炫酷博客