通用技术 [转] 微信 webview (x5) 调试方法

陈恒捷 · 2015年07月31日 · 2880 次阅读
本帖已被设为精华帖!

很久以前在 github 上 watch 了一个汇总各手机端浏览器的 debug 方法的项目:jieyou/remote_inspect_web_on_real_device,今天偶尔看到它的其中一个 issue 里面有一个如何做微信 webview 的文章,因此转载到这里分享一下。

原文地址:http://www.jianshu.com/p/ccf124f1f74b
原文作者:sherlock221b
原文标题:屌爆了,完美调试 微信 webview(x5)

前面的话

自从腾讯家族 移动 webview 入口换成了 x5 以来,业界褒贬不一,总体来说给开发者带来许多惊喜,其中最重要的就是微信 x5 调试能力,想想过去 码农们 苦逼的完成 code 本地浏览器一跑 ok 上微信 手 q 上 出现一堆兼容性的问题 惨不忍睹 过去微信 q 没有调试能力 只能借助 什么 weinre debugeap 等等 半吊子工具 凑合去使用

转眼 2015 微信已经开放 webview 调试能力 借助 chrome 调试不再是梦想 (换肤 断点调试 性能测试 控制台 等等 )

由于使用起来稍微有些复杂 以下按照模块方式介绍使用方式:

调试原理 借助 chrome 和 android adb 功能

前期准备

1.下载最新微信 我用是 6.1

2.下载 TbsSuiteNew.apk 安装到手机中 地址 (http://res.imtt.qq.com///tbs_inspect/TbsSuiteNew.zip)

3.打开微信 进入聊天界面 (任意) 输入框内输入//deletetbs,点发送

输入//gettbs 可以查看当前 tbs 情况

4.打开 TbsSuiteNew 选择按照本地 tbs 内核

5.下载 tbs 调试包

应用包名 微信:com.tencent.mm,qq:com.tencent.mobileqq,qq 空间:com.qzone】
我们选择微信即可

6.启动 tbs 静默安装

7.登录微信,用微信访问一个页面,停留 1 分钟左右,目的是让微信来静默安装刚导入进去的 tbs_xxxx_inspector.apk 包

8.一分钟过后打开 TbsSuiteNew 检查是否安装成功.

这里还需要在检查下 打开微信 随便进入一个 webview 页面 然后长按页面文字是否有水滴 ,若有则成功

ADB 安装

官网下载 android-sdk,执行 tools 文件夹下面的 android,然后选择 android sdk platform tools 安装

然后配置 android 环境变量 vim ~/.bash_profile

export ANDROID_TOOLS=/Users/sherlock/dev/android-sdk-macosx/platform-tools
export PATH=$PATH:$ANDROID_TOOLS

最后在 source .bash_profile 执行下环境变量 在控制台打出 adb 看是否已经配置 ok!

ps mac 下面 可能找不到国产设备可以按照以下方法尝试:

1.打开终端,system_profiler SPUSBDataType 命令 可以查看连接的 usb 设备的信息
2.我的是 MX4 PRO,设备的 vender id: 0x2a45 Product Id:0x0c02

  1. vi ~/.android/adb_usb.ini 命令,在打开的 adb_usb.ini 文件中添加 0x2a45, 然后保存退出
  2. 然后重启 adb adb kill-server adb start-server

有时 adb devices 不能显示连接设备,需要拔掉数据线,多插几次,并且退出终端,然后重新打开,再输入命令就能发现连接的设备,再无法连接请重启电脑,等待系统初始化环境设置。

adb devices 就能查看到已经连接的设备

安装 python

去 python(https://www.python.org/) 下载安装包安装 并且添加环境变量使得可以直接访问 python

python 启动调试服务

下载 (http://res.imtt.qq.com///tbs_inspect/wx_sq_webview_debug.zip )
包中包含 inspector_client20150401.zip

adb 安装完成之后我们就可以启动调试服务了,将下载好的 wx_sq_webview_debug 解压 然后找到其中的 inspector_client20150401 解压 并且进入。(记得打开 usb 调试)

执行以下 python 命令 python ./inspector.py --abd 你自己的 adb 路径

python ./inspector.py --adb /Users/sherlock/dev/android-sdk-macosx/platform-tools/adb

可能遇到错误
device unauthorized. Please check the confirmation dialog on your device.
请在你自己设备上同意 usb 调试

最后启动成功

最后完美开始调试

当 python 启动 ok 之后 我们就可以开心调试了,怎么做呢 ?

  1. 打开 chrome 浏览器 访问 http://localhost:9222/
  2. 打开 微信上面任意一个 page 页面
  3. 在 chrome 上就能看到 这个页面的选项卡 点进去就看到熟悉 chrome 调试界面 断点调试也没问题 控制台打印 element 选择器 都没问题

转载请注明出处 sherlock221b http://www.jianshu.com/p/ccf124f1f74b

结束的话

至此至终 百年来的微信 webview 调试愿望 终于如愿以偿 ,从此我们可以告别 weinre debugap 等等不稳定工具 迎来新的曙光 感谢 TX 随着 x5 的能力不断 微信势必会成为未来 html5 的战场。

根据 x5 的描述来看 微信 手 q 和 qq 浏览器目前 已经独立继承了 x5 我们只需要安装其中任意一个 就可以体验 x5 带来的特性。 对第三方 app x5 sdk 也提供了 换掉本地 webview 的能力 具体可以了解下 x5 浏览服务 (http://x5.tencent.com/). 若第三方 app 也能集成 x5 那我们也就可以使用 这种调试方式 去调试自己 app 的 webview

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 8 条回复 时间 点赞

对于前端开发来说,确实是一把不错的利器

匿名 #2 · 2015年08月03日

除了 debug 之外,X5Webview 的稳定性比系统自带的 webview 稳定性高很多,可以考虑引入 SDK,替代系统 Webview

#2 楼 @kendydrm 但这个 X5WebView 在兼容性方面有点小问题,如 ruby china 的一片红。

匿名 #4 · 2015年08月03日

@chenhengjie123 谢谢反馈,已经给项目组提 bug 了,兼容性是个长期工程,逐步解决中。

#4 楼 @kendydrm 好快!赞!你是在微信工作的?

匿名 #6 · 2015年08月03日

@chenhengjie123 是 X5 浏览器的问题哈哈

#3 楼 @chenhengjie123
#2 楼 @kendydrm position fixed 就会出现这种情况。 一片红是因为 fixed 那个 bar 的颜色是红色。

匿名 #8 · 2015年08月04日

@chenhengjie123 这个也是某些机型才会出现的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册