騰訊x5內(nèi)核TBS服務集成
2023/7/22 9:00:00 【次浏覽】 本站
由于系統自(zì)帶的(de)webview內(nèi)核不足以滿足現(xiàn)在很(hěn)多vue的(de)技(jì)術,經常會出現(xiàn)白屏,加載不全等一系列問(wèn)題,這(zhè)時(shí)就需要用到x5內(nèi)核了,國(guó)內(nèi)x5內(nèi)核基本都(dōu)可以解決問(wèn)題,如果上(shàng)架Google商店等海(hǎi)外(wài)市(shì)場(chǎng)運營的(de)項目,不建議(yì)使用x5內(nèi)核集成,Google商店等一些海(hǎi)外(wài)市(shì)場(chǎng)禁止上(shàng)架的(de)aab包攜帶騰訊,友(yǒu)盟一些sdk的(de)集成。
首先在騰訊浏覽服務中下(xià)載對(duì)應的(de)sdk,導入到項目中或者直接在app模塊的(de)build.gradle文(wén)件(jiàn)中添加依賴
dependencies {
api 'com.tencent.tbs:tbssdk:44275'
}
在清單文(wén)件(jiàn)中添加權限配置
<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" />
在清單文(wén)件(jiàn)中配置服務
<service
android:name="com.tencent.smtt.export.external.DexClassLoaderProviderService"
android:label="dexopt"
android:process=":dexopt" >
</service>
初始化(huà)加載x5內(nèi)核
HashMap map = new HashMap();//必須寫在初始化(huà)前
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之外(wài)的(de)網絡加載
QbSdk.setTbsListener( new TbsListener() {
@Override
public void onDownloadFinish(int progress) {
Log.e("QbSdk", "onDownloadFinish -->下(xià)載X5內(nèi)核完成:" + progress);
//若是progress ==100 的(de)情況下(xià)才表示 內(nèi)核加載成功, 否則重新 加載
if (progress !=100){
TbsDownloader.startDownload(MainActivity.this);
}
}
@Override
public void onInstallFinish(int progress) {
Log.e("QbSdk", "onInstallFinish -->安裝X5內(nèi)核進度:" + progress);
}
@Override
public void onDownloadProgress(int progress) {
Log.e("QbSdk", "onDownloadProgress -->下(xià)載X5內(nèi)核進度:" + progress);
}
});
QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
@Override
public void onViewInitFinished(boolean arg0) {
// TODO Auto-generated method stub
//x5內核初始化(huà)完成的(de)回調,為(wèi)true表示x5內(nèi)核加載成功,否則表示x5內(nèi)核加載失敗,會自(zì)動切換到系統內(nèi)核。
Log.e("QbSdk", "加載成功或者失敗==" + arg0);
}
@Override
public void onCoreInitFinished() {
Log.e("QbSdk", " x5 內(nèi)核加載成功 ");
Log.e("QbSdk", " x5 內(nèi)核版本号:"+QbSdk.getTbsVersion(MainActivity.this));
}
};
//x5內(nèi)核初始化(huà)接口
QbSdk.initX5Environment(MainActivity.this, cb);
首次加載,會出現(xiàn)加載失敗的(de)情況,建議(yì)初始化(huà)放(fàng)在啓動頁面來(lái)進行 ,初始化(huà)完成之後在進入webview相(xiàng)關頁面
相(xiàng)關源碼下(xià)載
手機(jī)掃碼查看(kàn)當前文(wén)章(zhāng):