Android 集成腾讯 TBS X5内核,并使用 TbsReaderView 加载 .pdf 文件

Android 集成腾讯 TBS X5内核,并使用 TbsReaderView 加载 .pdf 文件
tbs的接入:

腾讯官网的接入步骤: 添加链接描述
在官方文档中有各种优缺点的比较,以及比较详细的集成步骤。

自己接入过程的总结:

可以使用 下载 jar 包并编译的方式。目前最新版的 tbs 还可以使用 dependencies 的方式接入,建议使用这一种:

一、使用 dependencies 方式接入

1、在模块的 dependencies 中添加:

api 'com.tencent.tbs.tbssdk:sdk:43903'

一步就完成了依赖。

2、初始化:|

//搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
        QbSdk.setDownloadWithoutWifi(true);//非wifi条件下允许下载X5内核
        QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {

            @Override
            public void onViewInitFinished(boolean arg0) {
                //x5內核初始化完成的回调,为true表示x5内核加载成功,
                否则表示x5内核加载失败,会自动切换到系统内核。
                AppLog.e(" onViewInitFinished is " + arg0);
            }
            @Override
            public void onCoreInitFinished() {
            }
        };
        //x5内核初始化接口
        QbSdk.initX5Environment(getApplicationContext(), cb);

这段代码最好放在 Application.onCreate 里面。可以尽量在首次加载时就可以使用X5
在初始化时,会判断有没有X5内核(一般只要安装过 QQ 微信等一些腾讯产品后,都会有X5 内核。只要Android系统里面有X5内核,就可以进行共用。)。如果有会进行加载,没有会下载。

在我使用的过程中,发现在APP首次加载时X5内核时会失败,必须要把 进程Kill之后重启才能正常使用。
在打印日志后发现即使系统有X5内核,onViewInitFinished() 回调方法依然会返回 一次/两次 false。然后才会返回true。
大概这就是首次加载会失败的原因,返回false之后就会切换到系统内核。(纯猜测,自己的解决方式是当首次加载使用不了X5内核时,就用别的替代。也是稳稳的)

3、加载 pdf 文件:(xml 文件就不贴了,就一个帧布局)

private TbsReaderView mTbsReaderView;
FrameLayout pdf_rl;

//创建 TbsReaderView 对象并将其添加到帧布局中
mTbsReaderView = new TbsReaderView(this, this);
            pdf_rl.addView(mTbsReaderView,
                    new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
                            RelativeLayout.LayoutParams.MATCH_PARENT));

//加载,就是在这一步,app首次下载时,即使有X5内核 preOpen 也会返回 false
//只有 kill 进程后并重启才会有效果,这个问题搞了好久
//索性就在返回 false 之后换一种加载方式
boolean result = mTbsReaderView.preOpen(parseFormat(fileName), false);
            if (result) {
                mTbsReaderView.openFile(bundle);
                }else{
                //用 PDFView 加载
                }

private String parseFormat(String fileName) {
        return fileName.substring(fileName.lastIndexOf(".") + 1);
    }

下面是第二种接入方式:

二、下载jar包并编译方式接入:

1、在官网下载:

在这里插入图片描述

2、下载完成后将 jar 包放在项目的 libs 文件夹下:

在这里插入图片描述

3、对 运行在64 位 Android 系统的App兼容

在这里插入图片描述

4、在dependencies中添加

implementation files(
'libs/tbs_sdk_thirdapp_v4.3.0.3_43903_sharewithdownloadwithfile_withoutGame_obfs_20200402_121309.jar')

然后就是上面 一 的初始化过程了

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android TBS 内核加载失败的问题有很多种可能原因,下面我列举一些可能会导致 TBS 内核加载失败的问题: 1. 检查是否已经添加了 TBS 内核依赖库。在 app 的 build.gradle 文件中添加如下代码: ``` implementation 'com.tencent.tbs.tbssdk:sdk:xxx' ``` 其中 xxx 是 TBS 内核版本号。如果没有添加依赖库,TBS 内核将无法加载。 2. 检查是否已经获取了网络权限。因为 TBS 内核需要从网络上下载一些必要的文件,如果应用没有获取网络权限,TBS 内核将无法加载。 3. 检查是否已经初始化了 TBS 内核。在应用的 Application 类中添加以下代码: ``` QbSdk.initX5Environment(getApplicationContext(), cb); ``` 这里的 cb 是一个回调函数,用来检查 TBS 内核是否加载成功。如果没有正确初始化 TBS 内核TBS 内核将无法加载。 4. 检查是否已经升级了 TBS 内核。有时候,TBS 内核版本过低也会导致加载失败。可以尝试升级 TBS 内核到最新版本。 5. 检查是否已经适配了 64 位手机。如果应用没有适配 64 位手机,TBS 内核将无法加载。可以在 app 的 build.gradle 文件中添加如下代码: ``` ndk { abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' } ``` 这里的 abiFilters 表示需要适配的 CPU 架构。如果不适配 64 位手机,TBS 内核将无法在 64 位手机上加载。 希望以上方法能够帮助你解决 Android TBS 内核加载失败的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值