前言
移动端H5页面不同于传统PC页面,无法在移动设备上打开浏览器的dev工具进行调试,需要通过一些工具和设置,才能进行调试。下面,是笔者常用的一些移动端调试方法和工具。
Safari调试IOS页面
步骤
- 如果使用真机,由于iOS有签名校验机制,所以安装在真机上的包必须是测试包;如果是IOS模拟器,则忽略这一步
- 打开IPhone -> 设置 -> Safari -> 高级 -> Web检查器
- 通过USB线连接Mac
- 在Mac上打开Safari -> 偏好设置 -> 在菜单栏中显示“开发菜单”
- 开发 -> [你的IPhone] -> [你要调试的页面]
Chrome调试Android页面
步骤
- 如果是WebView,则需要允许WebView Debug;如果是Android Chrome则忽略这一步
1
2// APP代码中增加
WebView.setWebContentsDebuggingEnabled(true); - 开启Android设备的USB调试模式
- 通过USB线连接Mac
- 在Mac上打开Chrome ->
chrome://inspect/#devices
-> [你要调试的页面]
spy-debugger调试Android和IOS页面
步骤
- 安装spy-debugger
1
npm install -g spy-debugger
- 手机和Mac处于同一个局域网
- 终端输入spy-debugger
- 手机设置HTTP代理,[Mac IP地址]:9888
- 手机安装https证书,来调试https站点
1
注:手机必须先设置完代理后再通过(非微信)手机浏览器访问http://s.xxx安装证书
- 打开你要调试的页面
具体使用详见: GitHub
mobile-debug调试Android和IOS页面
步骤
- 安装mobile-debug: 官网
- 打开调试界面
- 接入新设备
- 按照提示进行,完成http代理设置,并安装https证书来调试https站点
- 点击调试注入规则管理 -> 添加调试注入规则
具体使用详见: 官网
扩展
spy-debugger是如何实现调试的
spy-debugger和mobile-debug可以调试任何APP,不需要在APP源码中做任何处理。那它们是如何做到的呢,mobile-debug因为是闭源的,我们无法知道。但spy-debugger是开源的,我们可以看到其源码。
通过文档和其源码可知,spy-debugger是对weinre, anyProxy以及node-mitmproxy的封装。其工作流程大致如下:
- 启动weinre server以及weinre client
- 启动一个mitmproxy server,当连接了这个proxy的手机请求H5页面的时候,就会向H5页面注入weinre的
target.js
脚本,而target.js
则会去hook相应的console
方法, 实现RPC调用,将日志显示在控制台中 - 启动一个anyProxy server,抓取H5页面的所以HTTP(S)请求,弥补weinre network面板显示的内容不够详细,同时可以用charles等抓包工具替代anyProxy,满足更多数据分析的需求
结语
以上就是笔者常用的移动端H5页面调试工具和方法,由于上述方法和工具已经能很好的满足日常H5页面的调试,所以没有再尝试其它调试工具,如果你有时间有兴趣,可以多尝试下其它工具和方法。