技術特性
騰訊瀏覽服務是致力於優化移動端webview體驗的整套解決方案。該方案由SDK、手機QQ瀏覽器X5內核和X5雲端服務組成,解決移動端webview使用過程中出現的一切問題,優化用戶的瀏覽體驗。同時,騰訊還將持續提供後續的更新和優化,爲開發者提供最新最優秀的功能和服務。其中,SDK是通過共享使用用戶手機上微信、手機QQ、空間等軟件已經下載好的X5內核,低成本實現對系統webview的替代。該SDK大小隻有200+K,接入時僅需修改幾行代碼。
其中,X5內核相對於系統webview,具有下述明顯優勢:
速度快:相比系統webview的網頁打開速度有30+%的提升;
省流量:使用雲端優化技術使流量節省20+%;
更安全:安全問題可以在24小時內修復;
更穩定:經過億級用戶的使用考驗,CRASH率低於0.15%;
兼容好:無系統內核的碎片化問題,更少的兼容性問題;
體驗優:支持夜間模式、適屏排版、字體設置等瀏覽增強功能;
功能全:在Html5、ES6上有更完整支持;
更強大:集成強大的視頻播放器,支持視頻格式遠多於系統webview;
視頻和文件格式的支持x5內核多於系統內核
防劫持是x5內核的一大亮點
其中,X5雲端服務包括雲加速、雲安全、雲轉換三大功能。雲加速是通過首屏加速、智能路由、圖片壓縮等技術保障網頁瀏覽的快、省、悅;雲安全是通過代理加密、URL安全檢測、JS黑名單管理、負載監控等防範網頁被劫持插入廣告、保障網頁瀏覽的安全穩定;雲轉換是使用URL聚合+XPATH的解決方案,解決移動閱讀難題。
接入方法
1、導入Jar包和so文件
https://x5.tencent.com/tbs/guide.html 下載SDK(且包括 示例Demo )
jar包在libs目錄下
so文件在示例中的\src\main\jniLibs\armeabi\libtbs.so
兩者都照搬到實際項目的對應目錄,jar包記得添加到依賴庫中
2、添加權限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<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" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 硬件加速對X5視頻播放非常重要,建議開啓 -->
<uses-permission android:name="android.permission.GET_TASKS" />
3、視頻設置
頁面的Activity需要聲明android:configChanges="orientation|screenSize|keyboardHidden"
4、檢測是否已使用了騰訊X5內核
1. webview的getX5WebViewExtension()返回非null表示已加載了x5內核webview
2. 您的app打開網頁http://soft.imtt.qq.com/browser/tes/feedback.html,顯示000000表示加載的是系統內核,顯示大於零的數字表示加載了x5內核(該數字是x5內核版本號)
其他的和webview都是大同小異的。
webView = (WebView) findViewById(R.id.forum_context);
WebSettings webSetting = webView.getSettings();
webSetting.setJavaScriptEnabled(true);
webSetting.setJavaScriptCanOpenWindowsAutomatically(true);
webSetting.setAllowFileAccess(true);
webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
webSetting.setSupportZoom(true);
webSetting.setBuiltInZoomControls(false);
webSetting.setUseWideViewPort(true);
webSetting.setSupportMultipleWindows(true);
// webSetting.setLoadWithOverviewMode(true);
webSetting.setAppCacheEnabled(true);
// webSetting.setDatabaseEnabled(true);
webSetting.setDomStorageEnabled(true);
webSetting.setGeolocationEnabled(true);
// webView.loadUrl("http://soft.imtt.qq.com/browser/tes/feedback.html");
webView.loadUrl("http://www.huya.com");
webSetting.setAppCacheMaxSize(Long.MAX_VALUE);
// webSetting.setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY);
webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND);
// webSetting.setRenderPriority(WebSettings.RenderPriority.HIGH);
webSetting.setCacheMode(WebSettings.LOAD_NO_CACHE);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
webView.getView().setOverScrollMode(View.OVER_SCROLL_ALWAYS);
protected void onDestroy() {
if (this.webView != null) {
webView.destroy();
}
super.onDestroy();
}
效果圖晚點再放,手機在充電。