腾讯x5内核TBS服务集成
2023/7/22 9:00:00 【次浏览】 本站
由于系统自带的webview内核不足以满足现在很多vue的技术,经常会出现白屏,加载不全等一系列问题,这时就需要用到x5内核了,国内x5内核基本都可以解决问题,如果上架Google商店等海外市场运营的项目,不建议使用x5内核集成,Google商店等一些海外市场禁止上架的aab包携带腾讯,友盟一些sdk的集成。
首先在腾讯浏览服务中下载对应的sdk,导入到项目中或者直接在app模块的build.gradle文件中添加依赖
dependencies {
api 'com.tencent.tbs:tbssdk:44275'
}
在清单文件中添加权限配置
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
在清单文件中配置服务
<service
android:name="com.tencent.smtt.export.external.DexClassLoaderProviderService"
android:label="dexopt"
android:process=":dexopt" >
</service>
初始化加载x5内核
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);//是否支持WiFi之外的网络加载
QbSdk.setTbsListener( new TbsListener() {
@Override
public void onDownloadFinish(int progress) {
Log.e("QbSdk", "onDownloadFinish -->下载X5内核完成:" + progress);
//若是progress ==100 的情况下才表示 内核加载成功, 否则重新 加载
if (progress !=100){
TbsDownloader.startDownload(MainActivity.this);
}
}
@Override
public void onInstallFinish(int progress) {
Log.e("QbSdk", "onInstallFinish -->安装X5内核进度:" + progress);
}
@Override
public void onDownloadProgress(int progress) {
Log.e("QbSdk", "onDownloadProgress -->下载X5内核进度:" + progress);
}
});
QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
@Override
public void onViewInitFinished(boolean arg0) {
// TODO Auto-generated method stub
//x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
Log.e("QbSdk", "加载成功或者失败==" + arg0);
}
@Override
public void onCoreInitFinished() {
Log.e("QbSdk", " x5 内核加载成功 ");
Log.e("QbSdk", " x5 内核版本号:"+QbSdk.getTbsVersion(MainActivity.this));
}
};
//x5内核初始化接口
QbSdk.initX5Environment(MainActivity.this, cb);
首次加载,会出现加载失败的情况,建议初始化放在启动页面来进行 ,初始化完成之后在进入webview相关页面
相关源码下载
手机扫码查看当前文章: