浏览器兼容性一直以来都是让 Web 前端开发人员头疼的问题。虽然移动端其内核趋于统一(Webkit),兼容问题也不再像 PC 端那么严重。但在生产环境当中,考虑到第三方浏览器在内核上面的 “优化”,如(Wechat、UC、QQ、360 等),兼容问题依旧是无法忽略。
本文汇总一下目前比较常见的 Web 移动端调试方法。
| 方法分类 | 调试难度 | 可调试目标 | 调试效果 | 建议使用优先级 |
|---|---|---|---|---|
| Chrome 模拟器 | 简单 | 所有 | 模拟效果,基本能调试 UI 及标准 JS 所有问题 | 极高 |
| Android 上的 Chrome | 一般 | Android Chrome | 真机效果,支持单步 | 较高 |
| IOS 上的 Safari | 一般,需要 Mac | IOS Safari | 真机效果,支持单步 | 高 |
| Android 上的 UC | 困难,需要 adb 辅助工具 | Android UC | 真机效果,支持单步 | 中等 |
| Android/IOS APP 里的 webview | 困难 | Webview | 真机效果 | 低 |
| Android 上的 x5 内核(微信等) | 困难 | Android x5 browser | 真机效果,支持单步 | 低 |
| spy-debugger/vorlon | 一般 | 所有 | 真机效果,不支持单步调试 | 最低 |
在 PC 上打开 Chrome 浏览器,打开想要调试的页面,然后右上角设置中打开开发人员工具(More Tools –> Developer Tools), 或者:
Ctrl + shift + I, Mac 为 option + command + I默认在页面左侧顶部可以看到设备选择下拉菜单 Device, 右侧会有 HTML、CSS 的调试界面,右下侧会有 JS 的 console 面板
chrome://inspect 然后回车,或通过菜单图标→工具→检查设备,进入调试界面早前一篇有过详细描述,具体请戳 → Here
chrome://inspect 然后回车进入调试界面IOS APP Webview 同理
===================== Updated 2017-06-08 ===================
感谢掘金用户 @夏空君 提醒,目前 X5 有 TBS_Studio 这种整体解决方案了
给个传送门吧: TBS开发调试利器——TBS Studio开篇
===================== End ===================
过程略繁琐,但是这个方案应该是目前调试 Webview 最强大的工具,支持断点调试、控制台打印等。以下步骤以 Wechat 举例:
前期准备
下载 TbsSuiteNew.apk 安装到手机
打开微信,进入任意聊天界面,输入框内输入 //deletetbs,点发送
打开 TbsSuiteNew,安装本地 tbs 内核
应用包名 微信:com.tencent.mm,qq:com.tencent.mobileqq,qq 空间:com.qzone,本例中选择微信即可
启动应用,用微信访问一个页面,停留 1 分钟左右,目的是让微信来静默安装刚导入进去的tbs_xxxx_inspector.apk 包
一分钟过后打开 TbsSuiteNew 检查是否安装成功。
这里还需要在检查下 打开微信 随便进入一个 webview 页面 然后长按页面文字是否有水滴 ,若有则成功
ADB 安装
官网下载 android-sdk ,执行 tools 文件夹下面的 android,然后选择 android sdk platform tools 安装( 示意图 )
*nix 平台 ADB 配置
配置 Android 环境变量 vim ~/.bash_profile
1 | export ANDROID_TOOLS=/Users/<yourname>/<yourpath>/android-sdk-macosx/platform-tools |
输入 source .bash_profile,执行下环境变量;接着在终端输入 adb,看是否已经配置 OK
Window 平台 ADB 配置
USB 连接手机,启动调试模式。终端输入 adb devices,就能看到已经连接的设备。
有时 adb devices 不能显示连接设备,需要拔掉数据线,多插几次,并且退出终端,然后重新打开,重启adb。
python启动调试服务
下载 调试包 ,解压,找到其中的 inspector_client20150401 解压,然后进入
执行以下 python 命令,
1 | python ./inspector.py —abd 你自己的adb路径 |
启动成功,PC 打开 Chrome 浏览器,访问 http://localhost:9222/; 手机打开微信任意 Webview,就能在 Chrome 看到这个页面的选项卡,点进去就是熟悉的调试界面~
有图有真相:
集成并简化了 weinre 繁琐的配置过程。通过代理的方式拦截所有 HTML 自动注入 weinre 所需的 js 代码。
===================== Updated 2017-06-09 ===================
感谢阿里师兄 @首长 提醒,同样通过 代理服务 + JS侵入 这种方式的,目前还有微软出品的 vorlon 工具
===================== End ===================
安装: npm install spy-debugger -g
手机和 PC 保持在同一网络下(比如同时连到一个Wi-Fi下)
命令行输入spy-debugger, 按命令行提示用浏览器打开相应地址。
设置手机的 HTTP 代理,代理 IP 地址设置为 PC 的 IP 地址,端口为s py-debugger的启动端口。
用手机浏览器访问你要调试的页面即可。
下图是亲测 QQ 浏览器的调试:
如果觉得文章对你有帮助的话,去 Github Repo 给个 star 吧亲~