在集成X5内核过程中,我遇到了很多问题。腾讯嘛,东西做的很好,但是官方文档写的是真的不行。不仅写的不清楚,而且可能会造成误导。但是没办法啊,X5内核确实比自带的webview强大。

其实,一开始集成X5内核我是拒绝的,直到我们的项目在魅族MX6,Android7.1.1上报了一个怎么也找不出原因的错,而且报错之后直接就闪退了,完全没有报错信息,魅蓝5上面都是正常的。将网页拷贝进Chrome之后,发现报了一个这样的错:

而由于我们的H5端代码又是不能改的,就只能委屈我们自己了。话不多说,开始搞事。

首先,打开https://x5.tencent.com/tbs/,把该准备的jar包等等准备好,前面所有的都按照腾讯的套路一步一步来。

系统内核

SDK内核

android.webkit.ConsoleMessage

com.tencent.smtt.export.external.interfaces.ConsoleMessage

android.webkit.CacheManager

com.tencent.smtt.sdk.CacheManager(deprecated)

android.webkit.CookieManager

com.tencent.smtt.sdk.CookieManager

android.webkit.CookieSyncManager

com.tencent.smtt.sdk.CookieSyncManager

android.webkit.CustomViewCallback

com.tencent.smtt.export.external.interfaces.IX5WebChromeClient.CustomViewCallback

android.webkit.DownloadListener

com.tencent.smtt.sdk.DownloadListener

android.webkit.GeolocationPermissions

com.tencent.smtt.export.external.interfaces.GeolocationPermissionsCallback

android.webkit.HttpAuthHandler

com.tencent.smtt.export.external.interfaces.HttpAuthHandler

android.webkit.JsPromptResult

com.tencent.smtt.export.external.interfaces.JsPromptResult

android.webkit.JsResult

com.tencent.smtt.export.external.interfaces.JsResult

android.webkit.SslErrorHandler

com.tencent.smtt.export.external.interfaces.SslErrorHandler

android.webkit.ValueCallback

com.tencent.smtt.sdk.ValueCallback

android.webkit.WebBackForwardList

com.tencent.smtt.sdk.WebBackForwardList

android.webkit.WebChromeClient

com.tencent.smtt.sdk.WebChromeClient

android.webkit.WebHistoryItem

com.tencent.smtt.sdk.WebHistoryItem

android.webkit.WebIconDatabase

com.tencent.smtt.sdk.WebIconDatabase

android.webkit.WebResourceResponse

com.tencent.smtt.export.external.interfaces.WebResourceResponse

android.webkit.WebSettings

com.tencent.smtt.sdk.WebSettings

android.webkit.WebSettings.LayoutAlgorithm

com.tencent.smtt.sdk.WebSettings.LayoutAlgorithm

android.webkit.WebStorage

com.tencent.smtt.sdk.WebStorage

android.webkit.WebView

com.tencent.smtt.sdk.WebView

android.webkit.WebViewClient

com.tencent.smtt.sdk.WebViewClient

总之呢,就相当于是一大波的自定义View和一大波的自定义接口,X5是基于4.4的WebView的。不过需要注意的是,**不仅在类里面要重写,布局文件中也要替换WebView的包。**官方给出了示例:

布局中WebView

android:id="@+id/forum_context"

android:layout_width="fill_parent"

android:layout_height="fill_parent" />

复制代码

这一步可不能忘了

x5暂时不提供64位so文件,为了保证64位手机能正常加载x5内核,请参照如下链接修改相关配置x5.tencent.com/tbs/technic…

其实,去他的官方demo里面把so文件拷到自己的项目里面就可以了的。

权限声明,这个就不用讲了吧

复制代码

上述步骤做完了之后,就可以在我们自定义的Application里面onCreate()里面初始化X5内核了,我写了个方法,initX5Core()

private void initX5Core() {

//搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。

QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {

@Override

public void onViewInitFinished(boolean arg0) {

//x5內核初始化完成的回调,为true表示x5内核加载成功

//否则表示x5内核加载失败,会自动切换到系统内核。

}

@Override

public void onCoreInitFinished() {

}

};

//x5内核初始化接口

QbSdk.initX5Environment(getApplicationContext(), cb);

}

复制代码

###重点来了,敲黑板了啊!

接下来这一步很重要,但是很多同学可能会不太在意。他会给你提出一些解决方案。

为了确保替换的完整,可以使用脚本checkqbsdk.sh 点击下载 进行扫描,windows 上使用TBSSdk接入扫描工具.exe 点击下载 进行扫描。脚本放在所有源码的顶级目录下运行即可。后续的版本发布前尽量都运行一遍扫描,以免上次扫描后新提交的代码有未替换的情况发生。替换不完全时,可能发生的问题是关于cookie的身份错误、类转换时的crash等。cookie问题产生的原理是:一段代码把cookie塞给了系统内核,另外一段代码尝试从x5的内核里读取cookie就失败了。类转换的错误产生的原理是:比如xml里指定的是系统的webview,java的代码里把它当作x5的webview使用。

我一开始也不知道还有这种操作,直到我按照官方文档一步一步来,好吧,如果是刚刚把jar包放到项目巴拉巴拉的。上面的操作都做了,然后兴高采烈地去看水滴标志。然而,并没有出现。慢慢地,回到上面,看到了这段不太醒目的话,就下载了一个来TBSSdk接入扫描工具.exe检验的,记得解压出来再检验,不然无法生成txt文件。扫描完成,没有建议项,但是我去看,还是没有水滴标志。于是,我点了AS上面的那个锤子进行编译,结果还是失败了。

####举个例子

回过去接着看文档,发现讲了一堆目前用不到的东西:

cookie

兼容视频播放

输入法设置

app 自定义 UA 的说明

app混淆时的处理

Tbs视频播放器接入说明

复制代码

我集成都还没成功,跟我讲这些,有啥用?于是我就把文档拉到底:

五、加载 x5内核的操作方法

下载安装TBSDemo到手机 点击下载;

启动 TBSDemo,等待几秒钟后看到提示框“x5内核安装成功,即将重启”,然后自动重启Demo;

TBSDemo重启后,当看到左上角显示“x5 core:”,然后可进行下一步,否则请联系我们;

卸载重装您的App,保持手机网络畅通,进入您的App的网页场景,等待3秒后在手机设置里杀掉您的App,然后再次启动您的App 进入网页场景,此时您的App就可以使用x5内核了;备注说明:

由于微信手Q下载X5内核会碰到流控等限制,操作门槛较高,所以通过前三步可以快速实现将TBSDemo中携带的X5内核部署到手机上。步骤四中判断X5内核是否启用,可以通过长按观察弹出菜单或文字选择的水滴效果确认已使用了 x5 内核

辨别是否使用x5webview的方法:

显示网页文字时,可通过长按选择文字的标识判断,如下水滴状选择效果是x5webview 的标志:

还很恶心地用了王宝强的新闻蹭热度。

好吧,下载他的TBSDemo运行,能出现x5 core提示。回头再打开自己的项目,ok了,出现了水滴标志,魅族MX6打开我们的网页也没有闪退,在其他机型上测试,加载速度和滑动效果大大提升。这是什么神操作???

难道说,他自己不会下载X5内核?因为我前几次测试,都不成功。后面的时候是,第一次不成功,第二次打开就有了。搞不懂,后来多弄了几下,就行了。我反正是真的找不到原因。忘了说,我用的是这个版本的tbs_sdk_thirdapp_v3.3.0.1045_43300_sharewithdownload_withoutGame_obfs_20170605_170212.jar

不知道其他版本会不会也是这样。反正我很久以前,那时候还要用key的时候,也是集成失败。百度一搜,话不多说自己感觉。

吐槽的链接就不贴了,大家用心灵去感受。毕竟这X5内核在我使用过程中没收费,虽然集成有很多坑,但是确实也解决了我的问题。总的来说,这次集成就这么稀里糊涂的成功了,能集成成功腾讯的东西我还是感到意外。共勉。

android 集成x5内核时 本地没有,腾讯X5内核集成一些建议和爬坑记录相关推荐

  1. android 集成x5内核时 本地没有,腾讯浏览服务-接入文档

    三.SDK集成步骤 1. 第一步 下载 SDK jar 包放到工程的libs目录下,将源码和XML里的系统包和类替换为SDK里的包和类,具体对应如下: 系统内核 SDK内核 android.webki ...

  2. kotlin与java混合开发_使用kotlin和Java混合开发Android项目爬坑记录

    使用kotlin和Java混合开发Android项目爬坑记录 不定期将开发过程中遇到的问题添加在此处,加深记忆. 主要内容包括但不限于java与kotlin语言的一些区别,以及在使用android-s ...

  3. X5浏览器支持HTML5吗,腾讯X5 Blink内核 加强H5支持和渲染性能支撑

    原标题:腾讯X5 Blink内核 加强H5支持和渲染性能支撑 腾讯浏览服务TBS2.0即日全量发布,X5内核升级到Blink版本,H5能力和渲染性能全面提升.随着TBS2.0的发布,使用TBS浏览服务 ...

  4. 编译linux内核时drivers/mtd/mtdconcat出错,linux 内核编译(七)

    转: linux内核编译 # # IP: Netfilter Configuration # CONFIG_IP_NF_QUEUE=m CONFIG_IP_NF_IPTABLES=m CONFIG_I ...

  5. jdk1.8版本下访问本地数据库文件(access数据库.mdb)与(火鸟数据库.fdb)踩坑记录

    项目场景: 具体场景是需要访问另一C/S架构软件生成的本地数据库,有两种,第一种是access数据库.mdb,第二种是闻所未闻的火鸟数据库.fdb文件,将二者中的数据提取出来入mysql.(期间走了很 ...

  6. 集成腾讯互动直播之大咖模式采坑记录

    最近在做互动直播,公司最后选择使用腾讯的直播sdk,而且为了增强用户体验,选择了腾讯互动直播的大咖模式.这里不得不吐槽一下,腾讯的sdk文档写的不是烂,而是非常烂,让人看的云里雾里的,结果就是大家都在 ...

  7. android 腾讯x5内核 浏览器

    1.浏览器内核: 主流浏览器内核介绍(前端开发值得了解的浏览器内核历史) 浏览器内核历史介绍: 在android 4.4之前,浏览器用的还是webkit 在android 4.4之后,google就抛 ...

  8. 简单的使用腾讯X5内核浏览器替代Android原生的WebView

    目录 简单的使用腾讯X5内核浏览器替代Android原生的WebView 第一步:X5官网下载SDK,引入到AndroidStudio中 第二步:如果是64位CPU手机,则需要引入一个so(liblb ...

  9. Android 项目集成腾讯X5浏览器内核

    1.为什么要集成腾讯 X5 浏览器内核 肯定是事出有因,简单来说,JS代码写的不标准,与部分机型内嵌套的浏览器内核产生矛盾,出现底层(os)bug导致,不得不费事搞一个其它内核进行加载网页,具体原因. ...

  10. Android集成腾讯X5浏览器内核库

    Android集成腾讯X5浏览器内核库 一.相关配置 1. 相关地址 2.引入SDK 3. AndroidManifest配置 二.Application中初始化内核 三.代码实现 1. 自定义带Pr ...

最新文章

  1. 2.4 Go语言基础之切片
  2. Java基础知识回顾-6
  3. Spring-AOP @AspectJ进阶之绑定抛出的异常
  4. 修改注册表给windows防火墙添加例外 ------------ 转
  5. 2018 hncpc 部分题
  6. linux拷贝大量文件时有什么方法可以效验文件有没有损坏,使用linux的cp命令复制文件后验证文件是否一致的方法...
  7. Springsecurity-oauth2之/oauth/token的处理
  8. android资源透明背景,@谷歌android帝 这是你想要的,全局透明背景教程,两种方法...
  9. 爬虫入门学习:爬取股票论坛信息
  10. MySql详解(四)
  11. python对数组缺失值进行填充
  12. 非常实用的,使用SQL查询连续号码段。(做计费系统或SP的兄弟经常会用到)...
  13. 解决MyEclipse里Tomcat端口被占用而无法启动的情况
  14. 惠普局域网共享打印机设置_HP LaserJet 1020局域网共享打印实操
  15. ROS:TF,机器人坐标管理神器
  16. 【FXP】连接站点并上传包文件:
  17. POJ 3422 Kaka's Matrix Travels(拆点+最大费用流)题解
  18. flutter引入高德地图_flutter配置高德地图SDK
  19. CSS3 SVG波浪线条动画js特效
  20. Android 面试题

热门文章

  1. 群晖DS220+ 应用小笔记
  2. python手册中文版--精选版python 中文手册.pdf
  3. LaTeX组件:texlive2019+texstudio+sumatraPDF 安装包及学习手册
  4. lopatkin俄大神精简中文系统Windows 8.1 Pro 19599 x86-x64 ZH-CN SM
  5. 软件工程经济学课后答案
  6. 基于python车牌号识别_python中使用Opencv进行车牌号检测——2018.10.24
  7. 计算机组成原理唐朔飞重点,计算机组成原理唐朔飞高分笔记
  8. js实现下载 .txt文件
  9. win10系统如何查找字体库位置+在matplotlib散点图中的应用+散点图中显示不了中文
  10. uniapp开发h5应用进行微信网页授权登录获取code失败