作者:行侠客人生_983 | 来源:互联网 | 2023-07-07 09:23
使用过程遇到的坑以及解决办法一、关于Xwalkview加载https网页出现安全证书ssl问题:二、在AndroidAPI版本26以后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,解压获得如下文件:
打开jar文件找到class.jar也按上面的方式解压,然后网上下载一个反编译工具(哪一个的都行,我用的jd-gui),class.jar解压出来如下目录:
根据IDE报错日志输出或者一步一步跟断点可以进入org目录下,看到断点进入的错误码,在\org\xwalk\core\internal目录下找到SslUtil.calss,用之前下载的反编译工具进行打开class文件,得到如下内容:
修改这个文件下面的shouldDenyRequest方法,修改之前的:
修改之后的(我直接把错误码直接全部注释掉了,直接返回false,跳过了弹窗)如下:
二、在Android API版本26以后 xwalkview会遇到需要动态申请联系人权限的问题,如果没申请权限会直接崩溃,这样对用户体验非常不好。 目前项目中的解决办法是设置targetSdkVersion低于26。还可以按上面的方法解决,根据崩溃日志找到contacts这个class文件并且修改他。下图贴出我找到的目录和引起崩溃地方:
修改右边圈出来的地方,加上版本判断,如下图为我修改过后的:
可以很好的解决这个问题。
三、当访问有问题的网页的时候会有一个英文弹框,提示用户网页不安全,是否继续访问,用户点击确定后才能访问。
在XWalkResourceClient的子类中重写这个方法:
四、Fragment 嵌套XWalkView闪黑屏和遮挡页面处理方案
这个可以直接访问我之前写的博客,写的比较详细:
地址:https://blog.csdn.net/TLuffy/article/details/82255205
五、关于XWalkView会增加apk体积问题分析
由于XWalkView本身依赖包会区分手机不同的内核,会有多个so文件,并且会在打包的时候打进去apk中,XWalkView的so文件就占了差不多50M,下面说两种解决方案:
So文件动态加载,提前把需要的so文件放在某个服务器上,在首次启动项目的时候启动后台服务去服务器下载所需的so文件,在未下载成功之前先用自带的Webview去加载页面。这样可以省去打包apk的时候加进去XWalkView的那些so文件,从而减少一大半apk的体积。缺点就是需要写两套代码,用户首次进入app需要做一些判断。这种方法在demo中测试是可以用的,项目中用的下面这种方案。直接打包so文件进apk,在apk上做处理,可以配置加固工具结合代码进行压缩apk大小,大小可以减到原来的一半。
优点:减少了apk体积,提升用户体验,不用首次使用后台启动服务去下载了。
缺点:每次升级都需要手动配置 六、Android 加载网页的几种区别
使用Android系统自带的WebView
优点:没有额外的JAR及负担,原生API
缺点:兼容性,性能在不同手机上显示差别很大,不过现在最新版本好多了
使用腾讯的X5内核的WebView
优点:提供了一个兼容性的解决方案,且微信,QQ浏览器都在用,可信度高
缺点:解决的能力一般,而且某些方面反而加大了开发工作量;而且不支持cordova
使用基于chrome webkit的crosswalk WebView
优点:没有兼容性,性能问题,且支持corodva
缺点:包太大,而且区分不同的arm,x86等CPU
五分快三计划子类中重写这个方法:
四、Fragment 嵌套XWalkView闪黑屏和遮挡页面处理方案
这个可以直接访问我之前写的博客,写的比较详细:
地址:https://blog.csdn.net/TLuffy/article/details/82255205
五、关于XWalkView会增加apk体积问题分析
由于XWalkView本身依赖包会区分手机不同的内核,会有多个so文件,并且会在打包的时候打进去apk中,XWalkView的so文件就占了差不多50M,下面说两种解决方案:
So文件动态加载,提前把需要的so文件放在某个服务器上,在首次启动项目的时候启动后台服务去服务器下载所需的so文件,在未下载成功之前先用自带的Webview去加载页面。这样可以省去打包apk的时候加进去XWalkView的那些so文件,从而减少一大半apk的体积。缺点就是需要写两套代码,用户首次进入app需要做一些判断。这种方法在demo中测试是可以用的,项目中用的下面这种方案。直接打包so文件进apk,在apk上做处理,可以配置加固工具结合代码进行压缩apk大小,大小可以减到原来的一半。
优点:减少了apk体积,提升用户体验,不用首次使用后台启动服务去下载了。
缺点:每次升级都需要手动配置 六、Android 加载网页的几种区别
使用Android系统自带的WebView
优点:没有额外的JAR及负担,原生API
缺点:兼容性,性能在不同手机上显示差别很大,不过现在最新版本好多了
使用腾讯的X5内核的WebView
优点:提供了一个兼容性的解决方案,且微信,QQ浏览器都在用,可信度高
缺点:解决的能力一般,而且某些方面反而加大了开发工作量;而且不支持cordova
使用基于chrome webkit的crosswalk WebView
优点:没有兼容性,性能问题,且支持corodva
缺点:包太大,而且区分不同的arm,x86等CPU