Android v 5.0 webview HTML5,CSS3和ES6兼容性

我有一个使用Crosswalk的混合
Android应用程序.几个月前我转向Crosswalk,这是一个巨大的生产力提升.我花了很多时间测试不同的Android操作系统版本,并且在HTML5 / CSS3 / ES6实现不完整的情况下遇到的问题要少得多 – 如果我理解正确的话,因为Crosswalk是基于Chromium而不是早期版本的Android.

然而,Crosswalk项目现在已被放弃.我的理解是Android中的原生Webview的后v 5.0实现非常好,以至于Crosswalk已经过时了.

我现在也在考虑放弃Crosswalk – 基于观察到我的目标市场(西欧)Android v 5.0-市场份额是个位数并且快速下降.

在我开始之前,我想我应该在这里问一下. Android v 5.0 WebView是否为HTML5,ES6和CSS3提供了真正平坦的Chrome等级API,或者我是否仍然可能遇到因各种设备供应商对操作系统进行“调整”而导致的未实现功能更糟糕的问题?

提一些具体问题

>我可以期待支持一整套CSS3伪选择器
>我可以假设我可以安全地工作而不使用-webkit样式的供应商前缀
>我是否能够编写使用Object.keys和其他更近期的JS稳定版的JS代码

我无法按版本找到有关Webview全套功能的全面讨论.我非常感谢有关此的任何反馈.

自从我发布这个问题以来,我已经尝试放弃Crosswalk并在运行Android 6的Moto E3Power手机上测试了结果.对于所有意图和目的,该应用程序仍然按预期工作.然而,这远非严格的测试.我正在对这个问题表示赏心悦目,希望能够产生一些明确的答案.

现在已经在两个设备上测试了我的非Crosswalk构建,我遇到了一个紧急问题.我做的一件事是修改cssText.例如

document.getElementById('id').style.cssText = 
";transform:rotate(45deg) translate(calc(1024px - 1.35em)) rotate(-45deg);"

在我的Android 6.0 Moto上完美运行并提供预期的结果:

>元素#idrotates 45度
>沿其旋转的X轴滑出
>最后旋转-45度

令人惊讶的是,在运行Android 7.0的HTC Hero上,这不起作用.虽然在添加-webkit-prefix之后我甚至没有尝试过.在这两台设备上,我将Webview升级到Play商店的最新版本.

最佳答案 我想你可以尝试:

if (Build.VERSION.SDK_INT >= 19) {
    webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}       
else {
    webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}

Android 19为WebView提供了Chromium引擎.我猜它在硬件加速方面效果更好.
硬件加速也很有用.您可以在应用程序的不同级别使用它.

申请级别

<application android:hardwareAccelerated="true" ...>

活动水平

<application android:hardwareAccelerated="true">
    <activity ... />
    <activity android:hardwareAccelerated="false" />
</application>
点赞