Crosswalk集成到Android Studio,替代原生WebView遇到的问题

Crosswalk集成到Android Studio,替代原生WebView遇到的问题

前言:

最近项目中很多地方用到h5页面,使用Android原生WebView进行展示时,版本低的机型无法显示页面。遂想到是不是有可以替换的框架或者产品。在这个过程中,使用了几个替代框架,遇到一些问题,在此与大家分享一下。如有不对的地方,欢迎指正!

在项目中尝试用到的产品
  1. SuperWebview
    SuperWebview是APICloud官方推出的另一项重量级API生态产品,以SDK方式提供,致力于提升和改善移动设备Webview体验差的整套解决方案。
    具体可以参考:http://docs.apicloud.com/Dev-Guide/SuperWebview-guide-for-android
  2. 基于X5内核的WebView
    腾讯浏览服务基于腾讯X5内核解决方案(包括内核和云服务),能够有效解决传统移动web技术面临的普遍问题,同时能极大扩展应用(Hybrid App)内浏览场景的服务能力。
    具体可以参考:http://x5.tencent.com/tbs/guide/sdkInit.html
  3. Crosswalk
    Crosswalk是一款开源的Web引擎,其基于 Chromium/Blink 的应用运行环境。采用Chromium内核并持续更新维护,使基于Crosswalk的Web应用充分享有Chromium的功能与性能优势,以及较好的平台一致性. 同时,支持最新的H5的API(WebGL,WebAudio,WebRTC,Gamepad,WebSocket,Presentation等)。并且在低端Android设备上也能流畅运行。
    官网:https://crosswalk-project.org/

使用各个产品遇到的问题

  1. SuperWebview
    SuperWebview查看官方文档,更倾向于web开发,不能直接替换WebView,在选择的过程中直接剔除掉了。
  2. 基于X5内核的WebView
    在剔除掉SuperWebview后,就找到了腾讯旗下的基于X5内核的webview(下文称之为X5Webview)。X5Webview有如下优点:

    • SDK提供的JAR包约250K
    • 速度快、省流量等
    • 方便快捷的替换原生的WebView。
      初见时十分高兴,遂将项目中部分原生的WebView替换为X5WebView。并在公司的大部分机型上进行测试,效果还是比较满意的。但是有如下缺点:
    • app启动后需要初始化,有时候X5内核没有初始化完成就需要打开H5页面就会造成页面打不开。但是初次初始化完成后,app启动初始化时间就很短了。

    后来还是决定替换X5Webview,因为当时某些机型又出现H5页面无法打开的状况。用原生的webview反倒是可以显示。后登陆其官网寻找问题,也没有及时得到解答。app初始化需要下载X5内核也是一大弊病,目前我没有找到将X5内核内置到app中的方法,导致有时第一次下载App时可能体验不是很好,尤其是当app H5页面较多时更是突出。

  3. Crosswalk Crosswalk是一款开源的Web引擎,其基于 Chromium/Blink
    的应用运行环境,对于混合开发的轻量级应用尤为受欢迎。 它允许Web开发者将他们的应用打包成系统的应用安装包,获得与本地应用一致的体验。
    同时也支持多个应用同时使用一个Crosswalk库的共享模式,仅当应用第一次启动并且发现系统还没有相应的Crosswalk库时才提示用户下载安装.
    目前是大多数情况下开发者将Crosswalk直接嵌入到应用本身。在这种嵌入模式下Web应用开发者可以完全控制Crosswalk的更新。
    如果将Crosswalk直接嵌入到应用中,你会发现你的apk激增20~50M体积,这一点也是使用时的让人犹豫不决的地方。

    但是总之,经过测试Crosswalk解决目前我遇到的问题。下面我就着重介绍一下,我在集成Crosswalk的过程中遇到的坑。至于具体集成的过程,已经有大神写的很好的文章了,我在这里就不再赘言。我直接将我参考的博文地址粘到后面。

集成Crosswalk遇到的问题

  1. 最低版本要求
    根据http://blog.csdn.net/sslinp/article/details/51607237文章介绍,最低版本是14,我的项目中就是14,于是就按照文章介绍集成,结果一build,报如下错误:

    Error:Execution failed for task:app:processArmv7DebugManifest.> Manifest merger failed with multiple errors, see logs

    查看log发现是我集成的版本要求最低版本是16。
    点击查看最新Crosswalk版本。如下图我集成的是目前最新的版本:
    这里写图片描述

    因此大家在集成的过程中遇到类似的问题,不妨看看是不是最低版本有问题。

  2. 开启硬件加速
    使用Crosswalk要求开启硬件加速,及需要在AndroidManifest.xml中的android的标签中增加如下属性:
    android:hardwareAccelerated=”true”。
    但是如果在WebView的父布局中增加了如下属性:android:layerType=”hardware”。我的应用出现如下问题:Webview进入OnPause()后重新进入OnResume()后,WebView页面先是白屏,需要等好大一会儿(我的大概两三分钟)才能够重新显示页面。如果你也也到类似的问题,直接将android:layerType=”hardware”属性去掉即可。

  3. apk瘦身 导入Crosswalk后,实在不能容忍app突增了好几十兆。按照网上文章集成后,apk由原来的40多兆激增到90多兆,这是不能容忍的。(http://blog.csdn.net/itCatface/article/details/49799337
    同样按照文章介绍的方式进行瘦身后,出现只要点击替换后的WebView页面,应用就崩溃的问题。通过debug,报的错误是找不到XWalkView这个类。只要惋惜的方尺文章介绍的瘦身方法。
    在网上查找到分别打包上线的方法,不同用户手机处理器下载不同版本。即在build.gradle中的android闭包中声明如下:
 productFlavors {

     armv7 {

            ndk {

                   abiFilters "armeabi-v7a"

            }

       }

    x86 {

         ndk {

            abiFilters "x86"

         }

       }

    }  

至此我的项目中Crosswalk就集成到此。希望我趟过的坑能帮助到大家。如果有不正确的地方,希望能够指正!

另附参考文章的地址:

  1. http://blog.csdn.net/sslinp/article/details/51607237.
  2. http://blog.csdn.net/itCatface/article/details/49799337.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值