我正在尝试设置一个解决方案,允许直接在Android平板电脑上完整调试javascript代码。这是一个在标准移动浏览器(如Chrome或Firefox)中运行的HTML5应用,需要调试。 “完全”是指需要设置断点并逐步执行代码(in,over,out)的能力。
能够直接在设备上进行调试对于远程调试的PC不可用的现场情况非常重要。在某些时候,将需要调试具有脱机功能的Web应用程序的能力,代理服务器将不必执行任何操作,假设前端代码已经加载到浏览器中和/或在丢失网络连接之前缓存在设备上,但这不是这个问题的焦点。
我能够使Weinre解决方案正常工作,但发现Weinre无法设置断点或单步执行代码。然后我发现了jsHybugger应用程序,这是一个付费产品,我可以在平板电脑上运行,代理请求服务器,然后提供调试界面,我实际上可以使用不同的浏览器选项卡查看安卓平板电脑设备。
我缺少的是jsHybugger不支持https,因此不会与提供调试代码的服务器通信。使用https而不是http非常重要,因为在服务器和浏览器之间传递敏感信息。由于调试是在现场进行的,因此不像在局域网上缺少https并不那么重要。总是可以在更受控制的设置中进行一些调试,但是在现场中不可避免地会出现错误,这些错误需要使用真实(非虚拟或消毒的http)数据进行“紧急调试”。
我知道有反向代理 - 例如我可以很容易地将代理https反向到apache中的http。但问题是,由于平板电脑和服务器之间的连接需要加密,我不能在服务器上进行代理,而且由于另一个(非Android)设备并不总是可用,我需要在平板电脑。到目前为止,我还没有发现任何应用程序显然看起来他们会做我需要的。例如,我看过i-Jetty,因为我已经读过Jetty(基于它)可以做我正在寻找的东西,但我在代理上看到的所有例子都是Java代码,我想避免需要为此自己编写任何代码。我也看过Fiddler,但它似乎没有在Android上运行,尽管大胆宣称它是“任何浏览器,系统或平台的免费网络调试代理”。显然,无论您使用什么平台或语言开发,“Fiddler都会随时为您提供帮助!”在这种情况下是错误的。我还查看了Google Play商店中的各种应用,却没有找到任何内容。也许这个功能并没有突出显示,我错过了它。希望有一些应用程序已经做了我需要的最少的配置摆弄。理想情况下它不需要root;如果它确实它不是一个show-stopper,但它不太优选作为root只是为了能够调试可能是一个麻烦,因为我们没有其他任何需要它,并且一些设备比其他设备更加繁琐。
或者,如果有更好的方法来完成我想要做的事情,我会接受这个作为答案。
答案 0 :(得分:6)
正如您所提到的,您的开发主要是在SDK上,我认为您可以找到可用于调试的选项是Dalvik Debug Monitor Server(DDMS)。它被称为最强大的Android调试工具之一,有Dalvik Debug Monitor Server。
专门针对HTTPS,Google App Engine将此功能作为您感兴趣的HTTP / HTTPS代理提供:gae-go-testing。看看Github上也可以使用的这个开源项目,它似乎利用了Google App Engine中的一些工具,这些工具也可以在Google Play作为已发布的应用程序使用。
作为替代方案,您可以考虑在开发服务器中运行该应用程序,并使用Selenium来执行测试。