【问题标题】:Android KitKat 4.4 Chromium WebView "v8_value_converter_impl.cc" errorAndroid KitKat 4.4 Chromium WebView“v8_value_converter_impl.cc”错误
【发布时间】:2017-03-21 06:25:12
【问题描述】:

我正在构建一个包含几个 webview 的 Android 应用程序。该应用程序需要至少支持 KitKat 4.4,根据this 嵌入 chromium v​​30 webview。我正在运行 4.4.2 stock rom 的 Samsung Galaxy Note 2 上测试该应用程序,webview 运行速度非常慢,并且 logcat 充斥着以下错误消息:

...
03-21 14:11:48.651 29445-29445/com.mylovely.app I/GraphicBuffer: allocate buffer (w:384 h:384 f:1) handle(0x6f64b600) err(0)
03-21 14:11:48.652 29445-29445/com.mylovely.app I/GraphicBuffer: allocate buffer (w:384 h:384 f:1) handle(0x6d715280) err(0)
03-21 14:11:48.652 29445-29445/com.mylovely.app I/GraphicBuffer: allocate buffer (w:128 h:192 f:1) handle(0x6dd99590) err(0)
03-21 14:12:03.996 29445-29884/com.mylovely.app E/chromium: [ERROR:v8_value_converter_impl.cc(405)] Getter for property selectionDirection threw an exception.
03-21 14:12:03.996 29445-29884/com.mylovely.app E/chromium: [ERROR:v8_value_converter_impl.cc(405)] Getter for property selectionEnd threw an exception.
03-21 14:12:03.996 29445-29884/com.mylovely.app E/chromium: [ERROR:v8_value_converter_impl.cc(405)] Getter for property selectionStart threw an exception.
03-21 14:12:04.007 29445-29884/com.mylovely.app E/chromium: [ERROR:v8_value_converter_impl.cc(405)] Getter for property selectionDirection threw an exception.
03-21 14:12:04.007 29445-29884/com.mylovely.app E/chromium: [ERROR:v8_value_converter_impl.cc(405)] Getter for property selectionEnd threw an exception.
03-21 14:12:04.007 29445-29884/com.mylovely.app E/chromium: [ERROR:v8_value_converter_impl.cc(405)] Getter for property selectionStart threw an exception.
... <skipped lots of duplicated error here>

03-21 14:12:05.370 29445-29445/com.mylovely.app I/dalvikvm-heap: Grow heap (frag case) to 41.055MB for 11211498-byte allocation
03-21 14:12:06.285 29445-29445/com.mylovely.app I/dalvikvm-heap: Grow heap (frag case) to 34.448MB for 4285074-byte allocation
03-21 14:12:06.354 29445-29445/com.mylovely.app I/Choreographer: Skipped 41 frames!  The application may be doing too much work on its main thread.
03-21 14:12:06.356 29445-29445/com.mylovely.app I/GraphicBuffer: allocate buffer (w:384 h:384 f:1) handle(0x637baab0) err(0)
03-21 14:12:06.358 29445-29445/com.mylovely.app I/GraphicBuffer: allocate buffer (w:384 h:384 f:1) handle(0x6e7ee640) err(0)
...

我已经做了一些谷歌搜索,发现这似乎已修复 this chromium ticket。但是由于我们无法通过 Google Play 更新 4.4.2 下的系统 webview。除了将其他 webview(如crosswalk)嵌入到应用程序之外,还有其他方法可以修复/解决此问题吗?

【问题讨论】:

  • 我想知道是否有办法在 kitkat 中更新 webview 的 chromium 版本。有人吗?

标签: android webview chromium


【解决方案1】:

我找到了问题的根本原因。我在onProgressChanged 回调中添加了一些繁重的js 任务,它们会输出一个空对象。此空对象无法序列化并导致this chromium ticket 中的错误。作为一种解决方法,我使用 IIFE 包装了所有 js 调用,以使用 Guava 的 RateLimiter 来抑制输出并限制 onProgressChanged 中的 js 调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多