腾讯TBS内核手动下载集成

2023-02-22  本文已影响0人  CoderUp

TBS使用场景

项目内有文档预览功能,使用TBS进行文档预览功能实现;(我所开发的项目,使用的到的只是TBS里的这一项功能,TBS是致力于提供优化移动端浏览体验的整套解决方案,具体功能清单,详见官方网站

遇到的问题

测试人员反馈偶现内核下载不成功,过一阵又能下载成功了,确定不是公司网络和设备的原因;

问题排查

根据官方集成文档,检查SDK集成代码,确认集成无误;查阅资料得知,TBS 官方由于成本CDN控制原因,不能保证内核100%下发成功;

官方解释文档截图

解决思路及方式

TBS 官方无法保证内核100%下发成功,所以内核下发的操作,自己来做;
具体步骤:

  1. 获取到TBS内核(分为32、64位两种,我拿到的内核放在网盘上了,有需要的,文末自取);按照官方集成文档,进行SDK的集成,首次打开app的时候,会进行内核的下载,下载完成后,可以在data/data/你的应用包名下/app_tbs/core_private目录下,找到一个名为x5.tbs的文件,大小为40M左右,将此文件拷贝到下来,并添加上.apk后缀。
  2. 将内核放到自家服务器上,或者直接放在项目assets目录下,打包到apk中(32位、64位两个内核,共70M多点);
  3. app启动后,从服务端下载内核文件或从assets目录中拷贝内核文件到本地;此处需要根据当前运行的apk包为32或64位,来加载对应的内核;获取当前apk位数代码如下:
    private boolean is32BitAbi() {
        String relativePath = "";
        String nativeLibraryDir = getApplicationInfo().nativeLibraryDir;
        if (!TextUtils.isEmpty(nativeLibraryDir)) {
            if (nativeLibraryDir.endsWith("/lib/arm64")) {
                relativePath = "lib/arm64-v8a";
            } else if (nativeLibraryDir.endsWith("/lib/arm")) {
                relativePath = "lib/armeabi-v7a";
            }
        }
        LogUtils.i("abi_type", relativePath);
        return "lib/armeabi-v7a".equals(relativePath);
    }
  1. TBS初始化时,直接加载本地内核
QbSdk.installLocalTbsCore(getApplicationContext(), 46141, x5TbsPath);

其中第二个参数,是内核对应的版本,第三个参数是内核的绝对路径;
除了上面这个方法,TBS SDK的初始化过程仍需参照官方文档进行,但不需要执行内核的下载操作,即下面这个方法不需要执行

TbsDownloader.startDownload(this);
  1. 首次加载内核成功后,用户后续打开时,不需要再此进行内核的下载和加载操作,可根据
QbSdk.canLoadX5(this)

作为是否需要进行内核加载的条件。

温馨提醒

参考文章:

android 腾讯X5 首次安装App 无效问题 (webview报错TypeError)

TBS文件浏览自主安装内核方案

静态集成腾讯TBS文件浏览能力

上一篇 下一篇

猜你喜欢

热点阅读