Android Studio-安卓 腾讯X5内核(TBS Webview)基本使用,配置腾讯TBS

关于X5内核的一些bug解决,可以查看这些文章:
链接: 解决bug.

安卓原生webview在安卓5.1版本之下canvas绘制内容加载不出来,所以就弃用了,改用腾讯X5浏览器

  • 1.SDK导入并配置
  • 2.os文件导入
  • 3.AndroidManifest.xml文件配置
    • 到这为止基本的配置就完成了,下面开始使用腾讯的X5WebView
  • 4.build.gradle文件配置
  • 5.初始化X5WebView
  • 6.替换在xml里的webview布局
  • 7.java里使用X5 webview

1.SDK导入并配置

腾讯TBS官网 : 官网.

Android Studio用户: 可在module的build.gradle文件的dependencies中添加 api 'com.tencent.tbs.tbssdk:sdk:43903’直接接入
Eclipse用户: 需要自行去官网下载sdk,并添加进去。
以下主要讲Android Studio端的配置。

2.os文件导入

接入了api后,还需自行导入os文件,否则无法使用需要从官网下载sdk文件。
Android Studio-安卓 腾讯X5内核(TBS Webview)基本使用,配置腾讯TBS_第1张图片
找到”sdk接入示例-Android-Studio并打开
Android Studio-安卓 腾讯X5内核(TBS Webview)基本使用,配置腾讯TBS_第2张图片
Android Studio-安卓 腾讯X5内核(TBS Webview)基本使用,配置腾讯TBS_第3张图片
在main文件夹下,复制整个jniLibs文件夹到你的安卓项目中。切记请放在与java res文件夹同一级。

3.AndroidManifest.xml文件配置

加载腾讯TBS需要一定的权限,否则会失败。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />  

到这为止基本的配置就完成了,下面开始使用腾讯的X5WebView

4.build.gradle文件配置

找到你项目app的build.gradle,在android 的 defaultConfig一栏,添加
ndk {
abiFilters “armeabi”, “armeabi-v7a”, “x86”, “mips”
}
以下是我的示例:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    defaultConfig {
        applicationId "########"
        minSdkVersion 16
        targetSdkVersion 29
        versionCode 22
        versionName "2.2"
        ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
        }
    }

5.初始化X5WebView

下面方法复制可直接调用,记得要在加载webview之前调用,所以最好是放在打开项目的时候就调用该方法,提前加载x5替换webview配置

 /**************腾讯X5webview**************/
    private void initX5WebView() {  //使用腾讯x5 webview,解决安卓原生wenview不适配不同机型问题


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

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

            @Override
            public void onViewInitFinished(boolean arg0) {
                // TODO Auto-generated method stub
                //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。

                if(arg0){//true
                    Log.e("腾讯X5", " onViewInitFinished 加载 成功 "+arg0);
                }else{
                    Log.e("腾讯X5", " onViewInitFinished 加载 失败!!!使用原生安卓webview "+arg0);
                }


            }

            @Override
            public void onCoreInitFinished() {
                // TODO Auto-generated method stub
            }
        };
        //x5内核初始化接口
        QbSdk.initX5Environment(getApplicationContext(),  cb);

    }
    


    /**************腾讯X5webview**************/
   

当你看到onViewInitFinished回调是true,那么就说明预加载腾讯成功

6.替换在xml里的webview布局

  <com.tencent.smtt.sdk.WebView
        android:id="@+id/TX_X5_webview"

        android:layout_width="match_parent"
        android:layout_height="match_parent">


    </com.tencent.smtt.sdk.WebView>

  //  
  //      android:id="@+id/nromal_webview"
  //      android:layout_width="match_parent"
  //      android:layout_height="match_parent">
  //  

7.java里使用X5 webview

    com.tencent.smtt.sdk.WebView  TX_X5_webview; //全局变量
   TX_X5_webview = findViewById(R.id.TX_X5_webview);
   TX_X5_webview.setBackgroundColor(0);
   TX_X5_webview.getSettings().setJavaScriptEnabled(true);
   TX_X5_webview.loadUrl("https://www.baidu.com/");
                    

这样子就完成了腾讯X5的基本使用了。

我在使用腾讯X5Webview会遇到各种坑,像是本地测试没问题,打包出来的项目有问题等,非常令人头疼。请看另一篇文章。

你可能感兴趣的:(Android,腾讯X5Webview,内核,安卓,webview)