简介
腾讯浏览服务是优化移动端webview体验的整套解决方案,解决移动端webview使用过程中出现的问题,优化用户的浏览体验。
使用原因
- 原生内核存在卡顿、不稳定、不安全、无法加载、兼容、各种bug等问题
- 想要使用文件预览功能
- 想要使用视频播放功能,TBS支持几乎所有的视频格式和HLS,RTMP/RTSP,HTTP+FLV,MMS四种直播流播放
平台适配
- Android版本: Android 4.0-Android 10.0
- CPU架构:armeabi、armeabi-v7a、arm64-v8a
接入
SDK接入
- jar包:https://x5.tencent.com/tbs/sdk.html
- Gradle:api ‘com.tencent.tbs.tbssdk:sdk:43903’
权限配置
<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" />
混淆配置
-dontwarn dalvik.**
-dontwarn com.tencent.smtt.**
-keep class com.tencent.smtt.** {
*;
}
-keep class com.tencent.tbs.** {
*;
}
异常
当发生异常时需要上报异常信息,可通过com.tencent.smtt.sdk.WebView.getCrashExtraMessage(appContext)获取异常信息
启动优化
TBS内核首次使用和加载时,ART虚拟机会将Dex文件转为Oat,该过程由系统底层触发且耗时较长,很容易引起ANR问题,解决方法是使用TBS的 ”dex2oat优化方案“。
1.设置开启优化方案
// 在调用TBS初始化、创建WebView之前进行如下配置
HashMap map = new HashMap();
map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
QbSdk.initTbsSettings(map);
2.增加Service声明
<!--只在TBS内核首次Dex加载时触发并执行dex2oat任务,任务完成后自动结束-->
<service
android:name="com.tencent.smtt.export.external.DexClassLoaderProviderService"
android:label="dexopt"
android:process=":dexopt" >
</service>
加载内核
在Application中加载X5内核
private void initX5(){
HashMap map = new HashMap();
map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
QbSdk.initTbsSettings(map);
QbSdk.setDownloadWithoutWifi(true);
Log.d(LOG_TAG, "开始加载内核");
QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
@Override
public void onCoreInitFinished() {
}