我正在一个网页视图中加载一个小角度的网页应用程序。我没有控制或任何信息的应用程序,除了网络包。
在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.除了定义错误的铬源代码之外,我没有在web上找到任何东西,我不知道如何调试这个问题,因为在移动Chrome浏览器上直接打开web应用程序没有问题。
那么,你们中有谁知道这个错误可能是什么?或者至少是我可以从哪里开始调试这个问题的线索呢?
发布于 2018-08-23 15:24:10
我也遇到了同样的问题。我发现css属性will-change: transform导致了这个问题,但我不知道为什么,因为这个属性在同一文件的其他地方使用,但不会导致错误。
我找到了罪魁祸首,使用charles在网页的响应上设置了断点,并系统地从html中删除了脚本和链接。最后,我发现通过删除主css链接,应用程序不再崩溃。然后,我必须系统地从css文件中删除行,直到我发现这一行破坏了WebView。
我仍然无法弄清楚为什么这一行会破坏它,但是它被设置在html中的jpeg图像上。好像是铬的问题。我还在努力弄清楚为什么铬有问题。
发布于 2018-08-23 22:44:03
虽然由于@P.G.的回答,我的问题得到了解决,但我想在不访问原始web应用程序代码的情况下添加解决问题的方式,这可能会对其他人有所帮助。
因此,我需要替换导致问题的CSS,所以我下载了原来的应用CSS,修复了它,并将它上传到我自己的服务器上。然后,在安卓应用程序中,我覆盖了web视图的shouldInterceptRequest方法,每当应用程序试图加载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);
}
});此外,我认为有一个列表的css崩溃的安卓webview将是非常有帮助的。我从这里开始,如果你找到另一个,请在这里自由评论,我会更新这个答案。
will-change: transform;filter:url(#blur);发布于 2020-07-02 13:12:18
我们也有类似的问题,在做了大量的分析后发现,这种情况发生在CSS文件中,这与宽度有关。
我们以前有过这个
.card,
.footer {
margin: auto;
max-width: 600px
}并在改变后继续工作。
@media (min-width:601px) {
.card,
.footer {
margin: auto;
max-width: 600px
}
}https://stackoverflow.com/questions/51971241
复制相似问题