TBS腾讯浏览服务静态集成,亲测可用,有demo

2,488 阅读4分钟

序言

TBS的好处我就不多说了,此篇文章是关于TBS的静态集成,如果想要动态集成的话,可以参考我的另一篇文章TBS腾讯浏览服务接入以及遇到的坑。静态集成最大的坏处就是包会特别的大,应该会增加30M左右,如果不想要的话可以看我的另一篇文章。想要静态集成的伙伴多数都是因为有些时候,内核会因为一些不知道什么原因不会下载或者加载内核,但是如果是静态的话就一定可以使用x5内核。这个下载加载的问题,我在另一篇文章中也有解决方案。

如果不想看下面文章的,可以直接下载我的demo,直接运行即可。想使用的话复制我里面的代码就可以直接使用了。Demo地址

准备工作

先下载2个东西,下面我会一一解释。 1.下载TBS加载的jar包。 静态集成jar下载地址。提取码:1898 2.下载内核所需要的so文件。下载地址

开始集成

在下载完TBS加载的jar包后,应该是下图的这个名字。将这个JAR包放在lib里面。在这里插入图片描述 在build.gradle文件中,添加以下配置。 在这里插入图片描述

ndk {
      abiFilters /*"armeabi",*/"armeabi-v7a","x86"
    }

在这里插入图片描述

 sourceSets {
    main {
      jniLibs.srcDirs = ['libs']
      java.srcDirs = ['src/main/java']
    }
  }

在这里插入图片描述

implementation fileTree(include: ['*.jar'], dir: 'libs')

新建一个jniLibs,在里面新建一个armeabi-v7a文件夹。如图所示 在这里插入图片描述

找到下载好的内核所需要的so文件的那个文件,tbs_core_045434_20201214164517_nolog_fs_obfs_release.tbs,将后面的tbs改成zip,解压打开。如果所示 在这里插入图片描述 将lib里面的文件全部复制到armeabi-v7a文件中。 在这里插入图片描述

到此文件的处理等工作就完成了。剩下的就是代码集成了。新建一个类集成Application,在onCreate中初始化TBS。

public class App extends Application {

  @Override
  public void onCreate() {
    super.onCreate();
    initTBS();
  }

  public void initTBS() {
    QbSdk.preinstallStaticTbs(getApplicationContext());

    QbSdk.setTbsListener(new TbsListener() {

      @Override
      public void onDownloadFinish(int i) {
        // 下载结束时的状态,下载成功时errorCode为100,其他均为失败,外部不需要关注具体的失败原因
        Log.i("QbSdk", "onDownloadFinish -->下载X5内核完成:" + i);
        Log.i("QbSdk", "onDownloadFinish---是否可以加载X5内核: " + QbSdk.canLoadX5(App.this));

      }

      @Override
      public void onInstallFinish(int i) {
        // 安装结束时的状态,安装成功时errorCode为200,其他均为失败,外部不需要关注具体的失败原因
        Log.i("QbSdk", "onInstallFinish -->安装X5内核进度:" + i);
        Log.i("QbSdk", "onInstallFinish---是否可以加载X5内核: " + QbSdk.canLoadX5(App.this));
      }

      @Override
      public void onDownloadProgress(int i) {
        // 下载过程的通知,提供当前下载进度[0-100]
        Log.i("QbSdk", "onDownloadProgress -->下载X5内核进度:" + i);
        Log.i("QbSdk", "onDownloadProgress---是否可以加载X5内核: " + QbSdk.canLoadX5(App.this));
      }
    });
    QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
      @Override
      public void onCoreInitFinished() {
        // 内核初始化完毕
        Log.i("QbSdk", "onCoreInitFinished ");
        Log.i("QbSdk", "onCoreInitFinished---是否可以加载X5内核: " + QbSdk.canLoadX5(App.this));
      }

      @Override
      public void onViewInitFinished(boolean arg0) {
        // x5內核初始化完成的回调,true表x5内核加载成功,否则表加载失败,会自动切换到系统内核。
        Log.i("QbSdk", " 内核加载 " + arg0);
        Log.i("QbSdk", "onViewInitFinished---是否可以加载X5内核: " + QbSdk.canLoadX5(App.this));

      }
    };
    // x5内核初始化接口
    QbSdk.initX5Environment(getApplicationContext(), cb);
  }

}

记得在AndroidManifest中添加名字。

<?xml version="1.0" encoding="utf-8"?>
<manifest
  xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.jackfruit.tbslocalwebview"
  >


  <!-- 写入扩展存储,向扩展卡写入数据-->
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <!-- 访问网络,网络定位需要上网-->
  <uses-permission android:name="android.permission.INTERNET" />
   <!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:name=".App"
    android:usesCleartextTraffic="true"
    android:theme="@style/Theme.TBSLocalWebview"
    >
    <activity android:name=".MainActivity">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
    <activity android:name=".TBSDebugWebActivity" />
    <activity android:name=".PreviewAttachmentActivity" />
  </application>

</manifest>

有一点不能忘了,这几个权限是一定要添加的。不然使用不了。到此就可以使用内核了。在我的demo中我都有打log查看是否加载成功,大家可以看下日志是否加载完成。过滤条件输入QbSdk即可。

Demo地址

现在来解释一下下载的那两个地址。 第一个是TBS加载内核的jar包,那个是最后一个静态加载的版本,直接下载即可。 第二个是内核的so文件,可以这么获取。使用webview打开debugtbs.qq.com

在这里插入图片描述 打开就是这个页面,但是我发现普通的webview打不开这个地址,页面提示说是不是x5内核,不能打开。所以可以这样,先照着我的另一篇文章TBS腾讯浏览服务接入以及遇到的坑,打开那个页面。然后点击安装线上内核。

在这里插入图片描述 在打印台可以看下这个地址。 在这里插入图片描述 内核下载地址

在我的demo中有打开文件的例子,使用的是TbsReaderView。可以打开pdf,docx等文件。以上就是全部内容。最后再一次附上demo地址,里面包含了静态与动态集成TBS。

集成Demo地址

欢迎订阅我的博客,坚持总是会看到希望的。