今天记录一下,webView的替代TBS的使用,腾讯浏览服务,X5强大内核。因为以前的接入H5界面、加载富文本,都是使用安卓原生的WebView控件。总所周知,WebView有很多的坑,其知识快是相当大的。由于原来项目使用原生加载高德地图,感觉可以满足开发的需求:在地图上画轨迹、添加图片等。最近有了新的需求,准备加载web端的界面。然而使用原生的webView加载显示不了,主要是根据不同的手机,显示异常。
最后选择使用腾讯的TBS,官网地址。官网上讲的很详细,以下就简洁概述集成过程。
1.导入jar包
下载Android SDK(完整版)
这个就是Jar包,之后放到你项目的libs文件夹。
compile fileTree(dir: 'libs', include: ['*.jar'])
//TBS
compile files('libs/tbs_sdk_thirdapp_v3.6.0.1310_43612_sharewithdownload_withoutGame_obfs_20180706_163319.jar')
2.添加权限
在Manifest文件添加下面的权限:
<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" />
3.初始化TBS
根据下载的demo中的方法,在Aplication中初始化
QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
@Override
public void onViewInitFinished(boolean arg0) {
// TODO Auto-generated method stub
//x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
Log.d("app", " onViewInitFinished is " + arg0);
}
@Override
public void onCoreInitFinished() {
// TODO Auto-generated method stub
}
};
//x5内核初始化接口
QbSdk.initX5Environment(getApplicationContext(), cb);
5.查看文档中原生和X5 WebView的类对应表
类的对应方法要进行修改,否则无法顺利使用,即导包使需要注意。
6.xml中的代码
<com.tencent.smtt.sdk.WebView
android:id="@+id/web"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
7.内存泄漏
@Override
protected void onDestroy() {
web_view.setWebChromeClient(null);
web_view.setWebViewClient(null);
web_view.clearCache(true);
try {
if (web_view != null) {
web_view.stopLoading();
web_view.removeAllViewsInLayout();
web_view.removeAllViews();
web_view.setWebViewClient(null);
web_view.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
web_view.clearHistory();
((ViewGroup) web_view.getParent()).removeView(web_view);
CookieSyncManager.getInstance().stopSync();
web_view.destroy();
web_view = null;
}
} catch (Throwable throwable) {
throwable.printStackTrace();
} finally {
super.onDestroy();
}
}
8.混淆
jar包本来就已经是混淆好的了,如果你打包时候没有添加规则再混淆一遍的话,就会无法使用x5内核了。所以需要添加混淆规则:下载混淆文件。解压后用文本编辑器打开,复制里面的内容到你项目的proguard-rules.pro混淆文件即可。
注:还有一些高级使用的方法,推荐网址,其实官方文档都有讲解,对于一些视频、输入法、兼容、混淆等内容。