使用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的时候,
- cat /proc/net/unix | grep devtools
在手机上执行这个命令端口也没了,Chrome里也看不到任何WebView了。使用DevEco里的Auto WebView Debug也一样不起作用了。但是重启app后,只开启一个WebView的时候就一切正常,一旦开启第二个,看起来似乎就是所有的调试连接立马全部断开了一样。
系统版本是5.1.0.128,华为P70pro
现在我不确定是因为最近升级了系统导致的问题,还是用法一直有问题,我感觉我失忆了,突然记不清之前有没有开过多个WebView进行调试了。手边也没有低版本系统的手机可以测试。
所以想问问大家有没有遇到这种问题?
【解决方案】
该问题在5.x系统版本中引入,当应用创建过多次Web组件,导致调试功能被关闭,可以通过如下步骤恢复调试功能。
- 先执行。
WebviewController.setWebDebuggingAccess(false)
- 再执行,此时调试功能可以重新打开。
如果应用又创建了Web组件而导致调试功能被关闭。可以继续执行上述的两个步骤重新打开调试功能。WebviewController.setWebDebuggingAccess(true)
样例代码:
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);
})
【总结】
升级补丁版本后,上述的规避代码应该回退掉。
临时解决方案亲测可用,感谢支持!
期待系统补丁。
也感觉是不是端口冲突了,但是开多个之后就全都没了,也没给我分别管理端口的机会啊~😁,
通过脚本自动获取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时,系统会终止所有调试连接。
临时解决方案:
- 保持单WebView调试模式
- 如需调试多个WebView,建议分多次调试
- 可以尝试在调试完第一个WebView后关闭它,再打开第二个进行调试
这个问题已在HarmonyOS后续版本修复计划中,建议关注官方更新日志。当前版本下,多WebView调试确实会出现连接断开的情况,不是用法问题。