替换的Crosswalk原因想必用过的都知道
- Crosswalk官方已经在2017年不维护了
- Crosswalk lib包太大,导致apk体积变大
遇到的问题总结:
- 在Application中初始化的时候直接闪退
错误日志: Caused by: java.lang.RuntimeException: java.lang.RuntimeException: Did not yet override the UI thread
at org.xwalk.core.ReflectConstructor.newInstance(ReflectConstructor.java:54)
at org.xwalk.core.XWalkView.reflectionInit(XWalkView.java:2082)
at org.xwalk.core.XWalkView.(XWalkView.java:261)
解决方法:参考官方给出的方法:
由于crosswalk及quic与x5存在相同的包名,会导致内核默认加载app classLoader中的类,导致内核加载失败或者出现crash,如果您需要解决该问题,可在初始化内核之前添加如下代码:
HashMap map = new HashMap();
map.put(TbsCoreSettings.TBS_SETTINGS_USE_PRIVATE_CLASSLOADER, true);
QbSdk.initTbsSettings(map);// 使用独立ClassLoader进行加载
- X5WebView加载出来的网页,滑动的时候会有个滚动条小方块,使用如下代码可以去掉。
IX5WebViewExtension ix5 = webview.getX5WebViewExtension();
if (null != ix5) {
ix5.setScrollBarFadingEnabled(false);
}
- Gradle方式集成方式
api ‘com.tencent.tbs.tbssdk:sdk:43939’
我这一直报如下错误,提示依赖包冲突,导致不兼容。
AAPT: error: resource android:attr/dialogCornerRadius not found.
采用jar包方式集成
我这没问题。
- 实现自定义长按菜单,并且屏蔽X5内核自带的长按菜单。
参考我另一篇博客 - X5初始化失败,造成项目崩溃
- 手机没装腾讯的app,X5首页初始化会下载内核,如果遇到没网的情况,在华为手机上会导致直接闪退,其他手机会自动加载系统内核。并且就算后期网络好了也不会继续下载内核(应该是个bug)
- 手机中装有腾讯的任一app,首次进入X5内核只需要共享内核,无需下载
- 造成崩溃的原因是初始化失败,获取参数的时候报空指针了,我这是这两个方法报空了
X5.getX5WebViewExtension()和X5.getSettingsExtension
,具体看你的报错信息。
解决办法:
- 非空判断,如果报空的地方不影响你项目执行逻辑可以采用这方法。
- 用手机访问debugtbs.qq.com中手动安装线上版本,提示安装成功,重启项目即可。
- 将内核直接打包到app中,会增大30多兆的size。
- 清理X5内核缓存方法
QbSdk.clearAllWebViewCache(this,true);