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

时间:2012-12-10 13:22:05

标签: android webview webkit remote-debugging web-inspector

我需要在Android应用程序中检查javascript执行(webview小部件),  调试时;通过SDK& USB电缆和/或http / websockets;  来自destop计算机(例如在桌面上运行的chrome)。

Webkit的源代码包括DebuggerServer实现  (platform_external_webkit \ Source \ WebKit \ android \ wds \ DebugServer.cpp)  可以在cpp级别访问,如果启用了标志WDS,则绑定(在构建时?)

Source \ WebKit \ android \ jni \ WebCoreFrameBridge.cpp:#if ENABLE(WDS) Source \ WebKit \ android \ jni \ WebCoreFrameBridge.cpp:WDS :: server() - > addFrame(frame);

服务器的默认端口是9999

消息来源显示所有内容都已实现(在Cpp级别)以启用该功能,  但我没有找到任何参考搜索网络的经验  在adroid设备自动化中使用javascript级别的实时调试  webkit的检查员界面。

1.-以二进制形式存在的功能是否在实际的Android设备中执行?  (adroid的webkit分发是在没有启用WDS标志的情况下构建的吗?:-()

2.-可以从javascript或应用程序启用/使用远程调试功能  (在java级别),例如在启动应用程序?

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

有些段落解释了类似的机制   https://developers.google.com/chrome-developer-tools/docs/remote-debugging#remote  会很好!

提前感谢任何有关此主题的信息或参考资料。 我认为重要的是启用远程调试(在设备中)  javascript级别使HTML5的现代开发成为可能  应用程序和愉快的调试经验。

欢呼声, ALE。

5 个答案:

答案 0 :(得分:7)

  

对于android> = 4.4(kitkat)

请参阅Remote debugging on Android with Chrome

  

对于android< 4.4(较低版本)

使用非常好的开源工具:weinre。有关使用它的帮助,请参阅this视频。 如果您熟悉grunt,则可以使用grunt-weinre

快速查看:

  1. 使用npm
  2. 安装weinre
  3. 执行gruntfile中的configuration
  4. 运行weinre grunt任务。
  5. 使用此脚本将weinre目标代码注入您的网页。
    1. 在浏览器中打开http://localhost:8082,您会发现在脚本上方运行的设备。您可以调试所有这些设备。
    2. 注意:如果您要在移动设备中调试webview /浏览器,则需要将localhost替换为运行weinre的计算机的IP。是的,所有设备都应该在同一个网络上。

答案 1 :(得分:5)

答案 2 :(得分:3)

您可以使用weinre项目针对Android浏览器进行远程调试。或者使用适用于Android的Chrome浏览器使用Chrome remote debugging。据我所知,你无法直接定位WebView,但定位Android浏览器应该会让你接近。

答案 3 :(得分:0)

无法完成,因为调试器后端代码不存在。您引用的源代码是android中的webkit源代码的副本,但它没有编译成android发布位。

答案 4 :(得分:0)

Pre KitKat jsHyBugger效果很好(试用版和年度单用户许可证€29)

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