我正在Webview中加载一个小的角度Webapp。除了webpacked捆绑包外,我没有控制权或该应用程序的任何信息。
在该Web应用中的确切时间点,我的整个Android应用因以下日志崩溃:
08-22 09:13:33.980 29145-29191/com.my.app E/chromium: [ERROR:validation_errors.cc(87)] Invalid message: VALIDATION_ERROR_DESERIALIZATION_FAILED
08-22 09:13:33.981 29145-29191/com.my.app E/chromium: [ERROR:render_process_host_impl.cc(4399)] Terminating render process for bad Mojo message: Received bad user message: Validation failed for SynchronousCompositorControlHost::ReturnFrame deserializer [VALIDATION_ERROR_DESERIALIZATION_FAILED]
[ERROR:bad_message.cc(25)] Terminating renderer for bad IPC message, reason 123
08-22 10:05:25.284 18717-18717/mx.tide.fiuanalyticsapp E/chromium: [ERROR:aw_browser_terminator.cc(86)] Render process (18816) kill (OOM or update) wasn't handed by all associated webviews, killing application.
除了在铬源代码中定义错误的地方之外,我没有在网络上找到任何其他东西,我不知道如何调试此问题,因为直接在移动Chrome浏览器中打开网络应用程序时没有问题。 br /> 因此,您是否知道此错误可能是什么?或者至少是从哪里可以开始调试问题的线索?
答案 0 :(得分:2)
我遇到了完全相同的问题。我能够发现一个css属性will-change: transform
引起了这个问题,但是我不确定为什么会这样,因为该属性正在同一文件的其他地方使用,但不会引起错误。
我能够使用charles代理在网页的响应上设置断点并系统地从html中删除脚本和链接来找到罪魁祸首。最终,我发现通过删除主要的CSS链接,该应用程序不再崩溃。然后,我不得不系统地从该css文件中删除行,直到发现该行破坏了WebView。
我仍然无法弄清楚为什么这行会中断它,但是它设置在html中的jpeg图像上。铬似乎是一个问题。我仍在设法弄清为什么铬有问题。
答案 1 :(得分:1)
尽管我的问题得到了@P的解决。 G.的回答,我想添加解决问题的方法,而不必访问原始的Web应用程序代码,这可能会对其他人有所帮助。
因此,我需要替换引起问题的CSS,因此我下载了原始应用CSS,并对其进行了修复,并将其上传到自己的服务器上。然后,在android应用程序中,我重写了Web视图的shouldInterceptRequest
方法,每当该应用程序尝试加载CSS时,我都会用自己的CSS替换它。
代码:
mWebView.setWebViewClient(new WebViewClient() {
@Override
public WebResourceResponse shouldInterceptRequest (WebView view, WebResourceRequest request){
String urls = request.getUrl().toString();
//To prevent the WebView from crashing, we serve our own css modified version
if( urls.equals("https://originalapphost.com/theircssfile.css") ) {
try {
URL url = new URL("https://myhost.com/mymodifiedcssfile.css");
URLConnection connection = url.openConnection();
return new WebResourceResponse(connection.getContentType(), connection.getHeaderField("encoding"), connection.getInputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
return super.shouldInterceptRequest(view, request);
}
});
此外,我认为拥有一个使Android webview
崩溃的CSS列表将非常有帮助。我将从这里开始,如果您找到另一个,请随时在这里评论,我将更新此答案。
will-change: transform;
filter:url(#blur);
答案 2 :(得分:0)
我们也有类似的问题,经过大量分析后发现,这种情况与CSS文件的宽度有关。
我们以前有这个
Traceback (most recent call last):
File "/app/Anaconda3/install/lib/python3.6/site-packages/urllib3/contrib/pyopenssl.py", line 304, in _send_until_done
return self.connection.send(data)
File "/app/Anaconda3/install/lib/python3.6/site-packages/OpenSSL/SSL.py", line 1729, in send
self._raise_ssl_error(self._ssl, result)
File "/app/Anaconda3/install/lib/python3.6/site-packages/OpenSSL/SSL.py", line 1631, in _raise_ssl_error
raise SysCallError(errno, errorcode.get(errno))
OpenSSL.SSL.SysCallError: (32, 'EPIPE')
并更改为该名称,更改后即可工作。
.card,
.footer {
margin: auto;
max-width: 600px
}
答案 3 :(得分:-1)
我通过禁用硬件加速解决了这个问题。