Android中接入腾讯TBS浏览器WebView的入坑指南

为什么不使用原生的webview?

最近公司的项目接入了webview,但是坑巨多无比,尤其是其内存泄露。所以我在想是否可以有第三方封装了webview。

比较Crosswalk与TBS服务

1.Crosswalk这玩意儿我没用过,据说是很流畅和强大,但是有一点是我暂时无法接受的,接入Crosswalk的话会导致APP的体积增大20M左右 ~ 所以我就放弃了,不过大家想研究的话那就自己去百度吧 !(嘿嘿,微笑脸)
2. TBS,腾讯出品,其实有点坑,本来也准备接入一下支付宝和淘宝都用的UC的内核的Webview的,但是我看了一下,需要审核,有点麻烦 ~

开始配置

  1. 首先需要去网站腾讯TBS浏览服务 进行注册,吐槽一点,需要验证身份证信息,坑爹的一比

  2. 参考一下TBS接入文档 不过里面讲解的比较啰嗦,不太清楚。
    a. 简单来讲的话就是 首先下载SDK和官方DEMO:完整版SDK和官方DEMO ,然后进行导入jar包和so文件 。jar包直接复制官方DEMO里面的,然后导入library。so文件的话直接复制Demo里面的文件夹jniLibs,到src/main/jniLibs

    jniLibsの位置

b. 不过在这里有个很坑的点是需要对so文件进行配置的,由于X5暂时不提供64位so文件,但是现在绝大部分手机都是64位的,所以为了保证64位手机能正常加载x5内核,需要进行配置。配置方法参考:64位手机无法加载x5(libmttwebview.so is 32-bit instead of 64-bit)

  defaultConfig {
        applicationId "com.jzt.mytbsdemo"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        //配置so文件
        ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
        }

//注意:这里之所以将这以下的代码注释掉,是因为我们已经到src/main/jniLibs里面导入了so文件,如果是在libs里面导入的so文件的话,则用以下代码 !

    //android studio默认so文件加载目录为:src/main/jniLibs
    //如在module的build.gradle按照如下方式,自定义了so文件加载目录请确保对应目录下只有armeabi目录
    //    sourceSets {
    //        main{
    //            jniLibs.srcDirs = ['libs']
    //        }
    //    }

c. OVER了,于是的话就这样将SDK配置完成了。

3.添加权限:



<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" />

4 . 配置Application

public class BaseApplicatiom extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //初始化X5内核
        QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
            @Override
            public void onCoreInitFinished() {
                //x5内核初始化完成回调接口,此接口回调并表示已经加载起来了x5,有可能特殊情况下x5内核加载失败,切换到系统内核。

            }

            @Override
            public void onViewInitFinished(boolean b) {
                //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
                Log.e("@@","加载内核是否成功:"+b);
            }
        });
    }
}
//别忘了在Manifest里面配置Appliaction的名字 !
 <application
        android:name=".BaseApplicatiom"

5 . Application里面配置key ,name一定得设置为: QBSDKAppKey

<meta-data  
android:name="QBSDKAppKey"  
android:value="PpeRpHjyzL5vTlc9LuNrRmHM" />
    </application>  
  1. 其它的都和Webview一样了,不过我看官方文档说的是只要出现水滴就是成功了,其实是错误的 ! ! ! 我的好几个APP都没有用TBS,但是也是水滴的。于是我找了好久,终于找到了这个测试的方法,绝对是niubility的~ X5内核加载问题自动检测工具发布啦

啦啦啦啦。。。下班了,明天再补充吧!!!

咳咳,回来了,继续啦啦啦啦 ~

7 . 经过测试以后得到的是这个,证明已经接入成功了!:

最后结果是

----------------------------------------------------------------------------------------------------

是时候放出源代码了!------> TBS不官方不坑人の源代码

----------------------------------------------------------------------------------------------------

About QA:

无法接入成功
SDK接入问题
判断接入问题
腾讯X5内核的集成和使用
Android WebView使用总结

----------------------------------------------------------------------------------------------------

Expand QA:

AgentWeb
Android WebView使用总结

----------------------------------------------------------------------------------------------------

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值