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

Dro*_*dOS 5 html5 android css3 webview ecmascript-6

我有一个使用Crosswalk的混合Android应用程序。几个月前,我改用Crosswalk,这极大地提高了生产力。我花了很多时间在不同的Android操作系统版本上进行测试,但由于HTML5 / CSS3 / ES6实现不完整,遇到的问题要少得多-如果我理解正确,因为Crosswalk基于Chromium,而早期版本的Android并非如此。

但是,Crosswalk项目现已被放弃。我的理解是,Android 5.0中本机Webview的post v 5.0实现是如此出色,以至于过时了Crosswalk。

我现在也想放弃Crosswalk,这是基于观察到,在我的目标市场(西欧)中,Android v 5.0-市场份额处于个位数并且正在迅速下降。

在我尝试之前,我想我应该问一下。Android v 5.0+ WebView是否为HTML5,ES6和CSS3提供了真正平坦的Chrome等级的API,还是我仍然会遇到各种问题,其原因在于各种设备供应商对操作系统的“调整”使未实现的功能变得更糟?

提及一些具体问题

  • 我可以期望支持一整套CSS3伪选择器吗?
  • 我可以假设我可以安全地工作而无需使用-webkit样式供应商前缀
  • 我能否将使用的JS代码Object.keys和其他较新版本的代码写入JS马stable

我无法按版本找到有关完整Webview功能集的全面讨论。我对此表示感谢。


自从我发布此问题以来,我已经尝试过删除Crosswalk,并在运行Android 6的Moto E3Power手机上测试了结果。但是,这远非严格的测试。我悬赏这个问题,希望它能带来一些明确的答案。


现在在两台设备上测试了我的非Crosswalk构建后,我立即遇到了一个问题。我要做的一件事是修改cssText。例如

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

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

  • 元素#id旋转45度
  • 沿其旋转的X轴滑出
  • 最后旋转回-45度

令人惊讶的是,在运行Android 7.0的HTC Hero上,此功能不起作用。尽管没有任何意义,但我甚至在添加-webkit-前缀后都进行了尝试。在这两种设备上,我都将Webview升级到Play商店上的最新可用版本。

小智 0

我想你可以尝试:

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

Android 19 拥有用于 WebView 的 Chromium 引擎。我想它与硬件加速效果更好。硬件加速也能起到作用。您可以在应用程序中的不同级别使用它。

应用级别

<application android:hardwareAccelerated="true" ...>
Run Code Online (Sandbox Code Playgroud)

活动水平

<application android:hardwareAccelerated="true">
    <activity ... />
    <activity android:hardwareAccelerated="false" />
</application>
Run Code Online (Sandbox Code Playgroud)