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

本文静态集成方案有问题,可参考TBS文件浏览自主安装内核方案

序言

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打开http://debugtbs.qq.com

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

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

内核下载地址

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

集成Demo地址

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

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
TBS腾讯浏览服务)是一种基于Chromium内核浏览内核,可以用于Android应用中实现WebView功能。TBS预加载技术可以在应用启动时提前加载TBS内核,加快WebView的初始化速度。 下面是TBS静态集成预加载技术的步骤: 1. 下载TBS SDK,并将其解压缩到项目目录中。 2. 在项目的build.gradle文件中添加以下代码: ``` dependencies { // 其他依赖 implementation project(':sdk_preload') } repositories { // 其他仓库 flatDir { dirs 'libs' } } ``` 3. 在app的build.gradle文件中添加以下代码: ``` android { // 其他配置 defaultConfig { // 其他配置 manifestPlaceholders = [TBS_PRELOADING: "true"] } packagingOptions { exclude 'lib/arm64-v8a/liblbs.so' exclude 'lib/arm64-v8a/liblbsLive.so' exclude 'lib/armeabi-v7a/liblbs.so' exclude 'lib/armeabi-v7a/liblbsLive.so' exclude 'lib/x86/liblbs.so' exclude 'lib/x86/liblbsLive.so' } } dependencies { // 其他依赖 implementation 'com.tencent.tbs.tbssdk:sdk_preload:4.3.0.1050' } ``` 4. 在项目的src/main/assets目录下创建文件夹preload,并在该目录下创建文件tbs_preload_x5.config,添加以下内容: ``` { "version": "1.0.0.0", "packages": [ { "name": "x5_core", "version": "4.3.0.1050", "md5": "c9d7c6b5c2a7bfc8e5a24f3b7f5a8c6c", "url": "file:///android_asset/preload/x5_core_4.3.0.1050.jar", "size": 36758733 } ] } ``` 5. 在应用启动时调用以下代码: ``` QbSdk.preInit(this, null); ``` 这样,TBS预加载技术就实现了。当应用启动时,TBS内核会被提前加载,加快WebView的初始化速度。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿界新星蔡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值