有关Xwalkview技术分享

使用过程遇到的坑以及解决办法

    • 一、关于Xwalkview加载https网页出现安全证书ssl问题:
    • 二、在Android API版本26以后 xwalkview会遇到需要动态申请联系人权限的问题,如果没申请权限会直接崩溃,这样对用户体验非常不好。
    • 三、当访问有问题的网页的时候会有一个英文弹框,提示用户网页不安全,是否继续访问,用户点击确定后才能访问。
    • 四、Fragment 嵌套XWalkView闪黑屏和遮挡页面处理方案
    • 五、关于XWalkView会增加apk体积问题分析
    • 六、Android 加载网页的几种区别

一、关于Xwalkview加载https网页出现安全证书ssl问题:

当项目中出现https和引用诸如HTTP资源就会出现不安全的提示,并页面空白出现Request was denied for security。关于这种问题Android自带的webview有很多的解决方法。但是对于Xwalkview却是很少,可以说几乎搜不到相关问题。下面贴出解决办法:
首先在下面这个地址下载一个aar包:

https://download.01.org/crosswalk/releases/crosswalk/android/maven2/org/xwalk/xwalk_core_library/

然后修改文件后缀名字为zip或者rar,解压获得如下文件:
有关Xwalkview技术分享_第1张图片

打开jar文件找到class.jar也按上面的方式解压,然后网上下载一个反编译工具(哪一个的都行,我用的jd-gui),class.jar解压出来如下目录:
有关Xwalkview技术分享_第2张图片
根据IDE报错日志输出或者一步一步跟断点可以进入org目录下,看到断点进入的错误码,在\org\xwalk\core\internal目录下找到SslUtil.calss,用之前下载的反编译工具进行打开class文件,得到如下内容:

有关Xwalkview技术分享_第3张图片

修改这个文件下面的shouldDenyRequest方法,修改之前的:

有关Xwalkview技术分享_第4张图片

修改之后的(我直接把错误码直接全部注释掉了,直接返回false,跳过了弹窗)如下:

有关Xwalkview技术分享_第5张图片

二、在Android API版本26以后 xwalkview会遇到需要动态申请联系人权限的问题,如果没申请权限会直接崩溃,这样对用户体验非常不好。

  1. 目前项目中的解决办法是设置targetSdkVersion低于26。
  2. 还可以按上面的方法解决,根据崩溃日志找到contacts这个class文件并且修改他。下图贴出我找到的目录和引起崩溃地方:

有关Xwalkview技术分享_第6张图片

修改右边圈出来的地方,加上版本判断,如下图为我修改过后的:

有关Xwalkview技术分享_第7张图片
可以很好的解决这个问题。

三、当访问有问题的网页的时候会有一个英文弹框,提示用户网页不安全,是否继续访问,用户点击确定后才能访问。

在XWalkResourceClient的子类中重写这个方法:

有关Xwalkview技术分享_第8张图片

四、Fragment 嵌套XWalkView闪黑屏和遮挡页面处理方案

这个可以直接访问我之前写的博客,写的比较详细:

地址:https://blog.csdn.net/TLuffy/article/details/82255205

五、关于XWalkView会增加apk体积问题分析

由于XWalkView本身依赖包会区分手机不同的内核,会有多个so文件,并且会在打包的时候打进去apk中,XWalkView的so文件就占了差不多50M,下面说两种解决方案:

  1. So文件动态加载,提前把需要的so文件放在某个服务器上,在首次启动项目的时候启动后台服务去服务器下载所需的so文件,在未下载成功之前先用自带的Webview去加载页面。这样可以省去打包apk的时候加进去XWalkView的那些so文件,从而减少一大半apk的体积。缺点就是需要写两套代码,用户首次进入app需要做一些判断。这种方法在demo中测试是可以用的,项目中用的下面这种方案。
  2. 直接打包so文件进apk,在apk上做处理,可以配置加固工具结合代码进行压缩apk大小,大小可以减到原来的一半。
    优点:减少了apk体积,提升用户体验,不用首次使用后台启动服务去下载了。
    缺点:每次升级都需要手动配置

六、Android 加载网页的几种区别

  1. 使用Android系统自带的WebView
    优点:没有额外的JAR及负担,原生API
    缺点:兼容性,性能在不同手机上显示差别很大,不过现在最新版本好多了

  2. 使用腾讯的X5内核的WebView
    优点:提供了一个兼容性的解决方案,且微信,QQ浏览器都在用,可信度高
    缺点:解决的能力一般,而且某些方面反而加大了开发工作量;而且不支持cordova

  3. 使用基于chrome webkit的crosswalk WebView
    优点:没有兼容性,性能问题,且支持corodva
    缺点:包太大,而且区分不同的arm,x86等CPU

你可能感兴趣的:(Android)