如何启用使用WebView的Android应用程序的WebKit远程调试/检查器?

16
我需要在Android应用程序中调试JavaScript执行(Webview小部件),并通过SDK和USB电缆和/或HTTP / Websockets从桌面计算机(例如在桌面上运行的Chrome)进行调试。 Webkit的源代码包括DebuggerServer实现(platform_external_webkit \ Source \ WebKit \ android \ wds \ DebugServer.cpp),可在Cpp级别访问,并在启用标志WDS时绑定(在构建时?)。服务器的默认端口为9999。源代码显示,所有实现(在Cpp级别)都已启用该功能,但我在搜索网络以寻找使用自动化的adroid设备上的JavaScript级别实时调试的经验时没有找到任何参考WebKit的检查器接口。1.二进制形式的功能是否存在于实际的Android设备中? (adroid的WebKit发行版是否已构建而未启用WDS标志?: -()2.远程调试功能是否可以从JavaScript或应用程序(在Java级别)启用/使用,例如在应用程序启动时?

3.- 如果可以启用webkit检查器/调试器功能,如何使其能够从远程应用程序交互?(例如,使用websockets的另一个javascript应用程序或chrome在桌面计算机上)。

一些解释机制的段落,例如https://developers.google.com/chrome-developer-tools/docs/remote-debugging#remote,会很好!

提前感谢任何关于此主题的信息或参考。我认为启用设备上的远程调试(在javascript级别)对于实现HTML5应用程序的现代开发和愉快的调试体验非常重要。

干杯, Ale。


远程调试xwalkview或webview - LF00
5个回答

8

对于 Android 版本 >= 4.4(kitkat)

请参考使用 Chrome 在 Android 上进行远程调试

对于 Android 版本 < 4.4 (低版本)

使用非常好的开源工具:weinre。请查看此视频以获取帮助。 如果您熟悉 grunt,则可以使用grunt-weinre

快速查看:

  1. 使用 npm 安装 weinre
  2. 根据配置说明在您的 gruntfile 中进行配置。
  3. 运行 weinre grunt 任务。
  4. 使用此脚本将 weinre 目标代码注入到您的网页中。
  1. 在浏览器中打开 http://localhost:8082,您将找到运行上述脚本的设备。您可以对所有这些设备进行调试。

注意:如果您想要调试移动设备中的 webview/浏览器,则需要使用运行 weinre 的计算机的 IP 替换 localhost。是的,所有设备都应该在同一个网络上。


非常感谢!在您的答案、视频链接、weinre 和 grunt-weinre 的帮助下,我成功地调试了运行在 Android < 4.4 上的 Ionic WebView。 - Chaki_Black

5

8
太好了,但是对于 Android 4.4 以下的设备怎么办?我真的需要调试Galaxy S3,它使用的是Android 4.3。 - Pikachu

3

您可以使用weinre项目远程调试针对Android浏览器的应用。或者使用Chrome远程调试,在Chrome for Android浏览器上进行调试。据我所知,您无法直接针对WebView进行调试,但针对Android浏览器进行调试应该能让您接近。


0

在 KitKat 之前,jsHyBugger 运行良好(试用版和年度单用户许可证 €29)

(我与开发者没有任何联系/未购买许可证)


0

这是不可能的,因为调试器后端代码不存在。您引用的源代码是 Android 中 WebKit 源代码的副本,但它没有编译到 Android 发布版本中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接