遇到一个诡异的 BUG,需要安卓实机上连接 Windows 并调试真实页面,求个思路。

2018-07-11 17:04:17 +08:00
 jmyz0455

我遇到了个棘手的问题,希望能通过安卓手机,实机去调试页面。但情况比较复杂,能搜到的方法都试过了,请各位指点一下。

我们有一个电商页面放微信上用的,新版本里需要加一个活动游戏。在测试环境里完全是没问题的,一上线就出现了游戏时身份验证失效的问题,经过多番排查,发现情况是这样的:

使用预装了国产 ROM 的安卓手机,在微信上玩这个游戏时,程序通过正式服务器的域名访问身份验证接口,必然会触发这个 BUG。

所以这意味着,我所了解的手机调试办法,都不行:

1、在电脑浏览器里打开页面是无法重现的,包括微信自家的 web 开发者工具。

2、iOS 是不会遇到这个问题的,所以 macOS 连接 Safari 那一套也可以放弃。那我为什么强调国产 ROM 的安卓手机才会有问题呢,因为我司所有的安卓手机都会遇到这个 BUG,唯独我手上刷了 LineageOS15.1 的可以运行,这是重点。

3、根据第 2 点,基本就可以放弃用 Chrome DevTools 的 Remote devices 来调试了,全公司只有我这台刷了原生 ROM 的 Android 手机能让 Windows 的 Chrome DevTools 成功 inspect 到页面,而偏偏就我这台机是遇不到问题的。真不知道腾讯对非 Google Play 渠道发布的微信的 Webview 魔改了什么东西,全公司的安卓手机微信都连不上 Chrome DevTools (其他手机在浏览器里连接电脑是可以的,就偏偏微信不行),苦逼啊。

4、第 3 点比较复杂,很难解释清楚,估计只有遇到过的前端才明白我在说什么,除了前面三个办法,我最后一个杀手锏就是 weinre 了,因为测试环境是没问题的所以我只好部署在正式环境,用一个测试页面来调试,问题是绕了一大圈之后,console 延迟非常严重,无法重现玩游戏时的身份验证丢失问题。

以上四招都失败之后,我就没办法了,我的期望是能让国产 ROM 的安卓手机也能在 Chrome DevTools 的 Remote devices 里 inspect 到手机里的微信页面,毕竟这种调试方式最接近普通用户在玩游戏的真实情况,不知道有没有老哥有 hack 方法?

听说过 X5 内核能用 TbsSuiteNew.apk 那一套来调试,但是搜到的教程都比较老旧了,可能微信已经做了处理吧,我总是无法安装本地 tbs 内核。或者有没有 v 友有其他调试思路的,请支招,谢谢。

1011 次点击
所在节点    前端开发
4 条回复
whileFalse
2018-07-11 18:33:50 +08:00
你们生产环境部署了 https 吗?是不是 https 的问题?
还有就是用代理抓过包了吗
jmyz0455
2018-07-12 17:46:49 +08:00
@whileFalse 用了 https,但是后端说觉得不是这个原因,因为其他接口都能通,其他设备调用这个身份验证。
代理抓包这个我漏了讲,试过过了,但是用代理抓包就只能用 ip 地址去访问(而不是用正式服务器的域名去访问),不用域名的话,一样没问题的。所以这个方法也没用。

这个问题超诡异的,安卓微信客户端用代理去访问,不用代理直接访问 ip 都是没问题的。直接访问正式域名才不行。
jmyz0455
2018-07-19 11:47:29 +08:00
最后发现原因是 http 请求头的数据丢失,不过关于调试手机这个问题,我还是希望有人来指教指教。
jmyz0455
2018-08-28 09:23:39 +08:00
求指教。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/469965

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX