使用DevEco Studio DevTools工具调试WebView时,打开多个WebView时无法调试

使用DevEco Studio DevTools工具调试WebView时,打开多个WebView时无法调试

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/web-debugging-with-devtools

使用上面文章中的说法,之前也用过几次,无论是手动命令行开启还是自动,都挺好用。

但是最近突然发现,打开第一个WebView的时候可以调试,同时开启第二个或者更多WebView的时候,

  1. cat /proc/net/unix | grep devtools

在手机上执行这个命令端口也没了,Chrome里也看不到任何WebView了。使用DevEco里的Auto WebView Debug也一样不起作用了。但是重启app后,只开启一个WebView的时候就一切正常,一旦开启第二个,看起来似乎就是所有的调试连接立马全部断开了一样。

系统版本是5.1.0.128,华为P70pro

现在我不确定是因为最近升级了系统导致的问题,还是用法一直有问题,我感觉我失忆了,突然记不清之前有没有开过多个WebView进行调试了。手边也没有低版本系统的手机可以测试。

所以想问问大家有没有遇到这种问题?


8 回复

【解决方案】

该问题在5.x系统版本中引入,当应用创建过多次Web组件,导致调试功能被关闭,可以通过如下步骤恢复调试功能。

  1. 先执行。
    WebviewController.setWebDebuggingAccess(false)
    
  2. 再执行,此时调试功能可以重新打开。
    WebviewController.setWebDebuggingAccess(true)
    
    如果应用又创建了Web组件而导致调试功能被关闭。可以继续执行上述的两个步骤重新打开调试功能。

样例代码:

Web({src : 'https://www.harmonyos.com/', controller: this.webview_controller})
  .width('100%')
  .height('100%')
  .javaScriptAccess(true)
  .fileAccess(true)
  .domStorageAccess(true)
  .databaseAccess(true)
  .layoutWeight(1)
  .onPageBegin(() =>{
    webview.WebviewController.setWebDebuggingAccess(false);
    webview.WebviewController.setWebDebuggingAccess(true);
  })

【总结】

升级补丁版本后,上述的规避代码应该回退掉。


临时解决方案亲测可用,感谢支持!

期待系统补丁。

估计多个webview不能使用同一个端口,要分别管理端口

也感觉是不是端口冲突了,但是开多个之后就全都没了,也没给我分别管理端口的机会啊~😁,

通过脚本自动获取PID并分配独立端口,对每个WebView执行独立映射:

# 这里举例批处理脚本逻辑

hdc shell param set web.debug.devtools true

for /f "tokens=*"

看了你的回答后,我看关键点在于你有个命令可以开启全局webview调试开关?

但是我运行后发现返回1001错误码,不知道是不是权限问题。

不过还是感谢您回复,上面技术支持狂狼的回复有根本原因和临时解决办法了。

在DevEco Studio中使用DevTools调试WebView时,多个WebView实例共享同一个调试端口会导致冲突。当前版本(3.1/4.0)的DevTools仅支持单个WebView调试会话。解决方法是在config.json中为每个WebView配置不同的id属性,或通过代码动态创建WebView时设置唯一标识。调试时需确保每次只激活一个WebView的调试窗口。此限制在鸿蒙SDK 5.0版本中可能得到改进。

这是一个已知的WebView调试限制问题。在HarmonyOS 5.1.0版本中,DevTools目前仅支持单个WebView实例的调试。当打开第二个WebView时,系统会终止所有调试连接。

临时解决方案:

  1. 保持单WebView调试模式
  2. 如需调试多个WebView,建议分多次调试
  3. 可以尝试在调试完第一个WebView后关闭它,再打开第二个进行调试

这个问题已在HarmonyOS后续版本修复计划中,建议关注官方更新日志。当前版本下,多WebView调试确实会出现连接断开的情况,不是用法问题。

回到顶部