作爲與js交互的優化之一,今天講一下如何集成騰訊X5。
首先我們先了解一下TBS瀏覽服務:
###背景知識:
1. TBS(騰訊瀏覽服務)的優勢
-
速度快:相比系統webview的網頁打開速度有30+%的提升;
-
省流量:使用雲端優化技術使流量節省20+%;
-
更安全:安全問題可以在24小時內修復;
-
更穩定:經過億級用戶的使用考驗,CRASH率低於0.15%;
-
兼容好:無系統內核的碎片化問題,更少的兼容性問題;
-
體驗優:支持夜間模式、適屏排版、字體設置等瀏覽增強功能;
-
功能全:在Html5、ES6上有更完整支持;
-
更強大:集成強大的視頻播放器,支持視頻格式遠多於系統webview;
-
視頻和文件格式的支持x5內核多於系統內核
-
防劫持是x5內核的一大亮點
2. 運行環境
1)手機ROM版本高於或等於2.2版本
2)手機RAM大於500M,該RAM值通過手機 /proc/meminfo 文件的MemTotal動態獲取
注:如果不滿足上述條件,SDK會自動切換到系統WebView,SDK使用者不用關心該切換過程。
3. SDK尺寸指標
1)SDK提供的JAR包約250K
集成步驟
- 下載SDK
地址:https://x5.tencent.com/tbs/sdk.html
2.將下載的tbs jar包依賴到項目中
3.將原生webview控件改成jar包下的控件:
<com.tencent.smtt.sdk.WebView
android:id="@+id/forum_context"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="5dp"
android:paddingRight="5dp" />
4.AndroidManifest.xml里加入權限聲明:
<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" />
5.Application初始化
//非wifi情況下,主動下載x5內核
QbSdk.setDownloadWithoutWifi(true);
//蒐集本地tbs內核信息並上報服務器,服務器返回結果決定使用哪個內核。
QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
@Override
public void onViewInitFinished(boolean arg0) {
//x5內核初始化完成的回調,爲true表示x5內核加載成功,否則表示x5內核加載失敗,會自動切換到系統內核。
LogUtils.d("開啓TBS===X5加速成功");
}
@Override
public void onCoreInitFinished() {
LogUtils.d("開啓TBS===X5加速失敗");
}
};
//x5內核初始化接口
QbSdk.initX5Environment(getApplicationContext(), cb);
剩下的配置大家自行配置就好了。
注意點
1.APP首次初始化很久
解決方案:
(1)多進程方案:
// 在調用TBS初始化、創建WebView之前進行如下配置,以開啓優化方案
HashMap<String, Object> map = new HashMap<String, Object>();
map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
QbSdk.initTbsSettings(map);
(2)正價Service聲明:
<!-- 在AndroidManifest.xml中增加內核首次加載時優化Service聲明; 該Service僅在TBS內核首次Dex加載時觸發並執行dex2oat任務,任務完成後自動結束。 --><service
android:name="com.tencent.smtt.export.external.DexClassLoaderProviderService"
android:label="dexopt"
android:process=":dexopt" ></service>
2.x5暫時不提供64位so文件
爲了保證64位手機能正常加載x5內核,請參照如下鏈接修改相關配置https://x5.tencent.com/tbs/technical.html#/detail/sdk/1/34cf1488-7dc2-41ca-a77f-0014112bcab7
大家可以關注我的微信公衆號:「秦子帥」一個有質量、有態度的公衆號!