【发布时间】:2014-01-07 09:46:47
【问题描述】:
我正在尝试设置一个解决方案,以允许直接在 Android 平板电脑上全面调试 javascript 代码。这是一个在标准移动浏览器(如 Chrome 或 Firefox)中运行的 HTML5 应用程序,需要调试。 “完整”是指设置断点和单步执行代码(进、出、出)的能力。
能够直接在设备上进行调试对于在现场无法使用 PC 进行远程调试的情况非常重要。在某些时候,将需要调试支持离线的 Web 应用程序的能力,其中代理服务器不必做任何事情,假设前端代码在失去网络连接之前已经加载到浏览器和/或缓存在设备上,但这不是这个问题的重点。
我能够让 Weinre 解决方案正常工作,但发现 Weinre 不具备设置断点或单步执行代码的能力。然后我发现了jsHybugger 应用程序,这是一个我可以在平板电脑上运行的付费产品,它代理对服务器的请求,然后提供一个调试界面,我可以在同一个安卓平板电脑上使用不同的浏览器选项卡实际查看它设备。
我缺少的部分是 jsHybugger 不支持 https,因此不会与提供要调试的代码的服务器通信。使用 https 而不是 http 很重要,因为敏感信息在服务器和浏览器之间传递。由于调试是在现场进行的,因此它不像在缺少 https 并不那么重要的 LAN 上。总是可以在更可控的环境中进行一些调试,但不可避免地会在需要“紧急调试”的领域出现错误,需要使用真实的(不是虚拟的或对 http 进行清理的)数据。
我知道那里有反向代理——例如,我可以很容易地在 apache 中将 https 反向代理为 http。但问题是,由于平板电脑和服务器之间的连接需要加密,我无法在服务器上进行代理,而且由于另一台(非安卓)设备并不总是可用,我需要在平板电脑。到目前为止,我还没有找到任何明显看起来可以满足我需求的应用程序。例如,我看过 i-Jetty,因为我已经读过 Jetty(它基于它)可以做我正在寻找的东西,但是我在代理上看到的所有示例都是 Java 代码,我想避免需要自己为此编写任何代码。我也看过 Fiddler,但它似乎无法在 Android 上运行,尽管它大胆声称它是“适用于任何浏览器、系统或平台的免费 Web 调试代理”。显然是声称“无论您使用什么平台或语言进行开发,Fiddler 都可以提供帮助!”在这种情况下是错误的。我还查看了 Google Play 商店中的各种应用程序,但没有找到任何东西。也许这个功能没有在显眼的地方做广告,而我错过了它。希望已经有一些应用程序可以通过最少的配置摆弄来满足我的需求。理想情况下它不需要root;如果是这样,它就不是一个展示停止器,但它不太受欢迎,因为仅仅为了能够调试而生根可能会很麻烦,因为我们不需要做任何其他事情,而且有些设备比其他设备更容易生根。
或者,如果有更好的方法来完成我想要做的事情,我会接受它作为答案。
【问题讨论】:
标签: javascript android debugging https reverse-proxy