使用最新更新到v90.0.4430.82渲染内容时,AndroidWebView崩溃
WebView 更新 v90.0.4430.82
在 WebView 中呈现内容似乎有一些问题。加载很好,但在屏幕上显示不是。这似乎是随机的,但始终如一。一些 URL 呈现良好,但其他 URL 在呈现时不断使应用程序崩溃。
在此更新之前,一切正常。我什至从“设置”->“应用”->“Android 系统 WebView”(在较旧的设备上禁用 Chrome)回滚更新并再次正常工作。似乎又出现了一个问题,就像我们在 2020 年 3 月看到的那样。
这是崩溃报告:
E/chromium: [ERROR:aw_browser_terminator.cc(123)] Renderer process (11930) crash detected (code 5).
A/chromium: [FATAL:crashpad_client_linux.cc(667)] Render process (11930)'s crash wasn't handled by all associated webviews, triggering application crash.
A/libc: Fatal signal 5 (SIGTRAP), code -6 (SI_TKILL) in tid 10907 (oc.showcase.dev), pid 10907 (oc.showcase.dev)
回答
WebView 已更新至 90.0.4430.91,但可以肯定的是,此修复程序将在以后的版本中引入(Beta 和 Canary 尚未修复此问题,但会引入)。
WebView 和整个应用程序崩溃的原因是由注入的 JavaScript 代码引起的。在 JavaScript 中替换iframe为document.write解决了该问题,但这不是一个长期的解决方案。问题iframe在于它本身的 WebView。
另外,为了防止崩溃整个应用程序是这样的,因为这是崩溃时造成内容的WebView中被渲染,你应该重写onRenderProcessGone你的CustomWebViewClient一个扩展WebViewClient。但是,同样,此解决方案将仅针对 API 级别 26+ 防止呈现问题和使整个应用程序崩溃。API 26 下没有类似的东西,因此这个问题会导致整个应用程序崩溃,而不仅仅是 webView。
临时(以防万一)解决方案是检测 WebView 的版本代码,如果是错误代码(v90.0.4430.82),则根本不初始化 WebView,或者注入一些其他经过测试的 URL(HRML 与JS) 不会导致崩溃。
在这里您可以找到错误单、描述和回复:https : //bugs.chromium.org/p/chromium/issues/detail?id=1201228&q=component%3AMobile%3EWebView& can
=2