rainbow-android-app

WebView兼容性

  • WebView兼容性一直以来都是Android开发的一大问题,随着系统版本升级自带的WebView也在更新,尤其是Android 4.4使用了Chromium替代Webkit作为WebView内核,再加上第三方ROM可能对原生WebView有做修改,导致了很多兼容性问题。在云助理对“云课堂”进行支持的过程中更加暴露出兼容性问题造成的影响(视频无法播放等)。

  • 各个手机WebView版本不同、内核也会不同,兼容性问题没法完全解决。怎么办?不用自带WebView,App自己提供内嵌浏览器!你看微信也是使用自家的内核~ weixin

Crosswalk

  • 优点

    • 只要控制crosswalk版本即可,各个设备上都有一致的表现。
    • crosswalk使用最新的Chromium内核,性能强大。
    • 可使用Chrome DevTools作为调试工具。
    • 使用Crosswalk提供的XwalkView与系统自带的WebView除了类名、方法名等基本一致,替换起来较容易。
  • 缺点

    • app内置浏览器,仅仅提供对arm架构的支持就会增加安装包大小20M。
  • 注意事项

    1. 预加载

      由于XwalkView内存占用较大,第一次加载会比较耗时,为避免打开网页时延迟过久,在应用启动时加载new XWalkView(activity, activity)即可。

    2. 系统限制

      由于只使用了支持arm架构的Crosswalk,且Crosswalk要求4.0以上系统,运行时需要加以判断,符合要求才使用XwalkView,否则使用自带的WebView。

      public static boolean isCrosswalkSupport() {
           return Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH
               && (android.os.Build.CPU_ABI.startsWith("armeabi-v7a")
               || android.os.Build.CPU_ABI.startsWith("arm64-v8a"));
      }
      
    3. 允许文件下载

      默认不允许文件下载,即点击下载链接无效,需要调用XwalkView.setDownloadListener(XWalkDownloadListener)

    4. 允许文件上传

      默认不允许文件上传,需要实现XWalkUIClient的openFileChooser(XWalkView view, ValueCallback<Uri> uploadFile, String acceptType, String capture)方法,调用系统文件选择器。