腾讯X5内核的集成和使用

  • 先看看什么地方用到了这个内核:

  • TBS(腾讯浏览服务)的优势
  • 1)速度快:相比系统WebView的网页加载速度有近30%的提升
  • 2)省流量:云端优化技术使流量节省20%
  • 3)更安全:24小时安全问题解决机制
  • 4)更稳定:经过亿级用户的使用考验,CRASH率0.15%
  • 5)集成强大的视频播放器,支持各种视频格式直接打开
  • 6)适屏排版、字体设置等浏览增强功能的提供
  • 7)Html5更完整支持
  • 8)无系统碎片化问题、更少的兼容性问题
  • 原生webView和 x5webView对照图
系统内核 SDK内核
android.webkit.ConsoleMessage com.tencent.smtt.export.external.interfaces.ConsoleMessage
android.webkit.CacheManager com.tencent.smtt.sdk.CacheManager(deprecated)
android.webkit.CookieManager com.tencent.smtt.sdk.CookieManager
android.webkit.CookieSyncManager com.tencent.smtt.sdk.CookieSyncManager
android.webkit.CustomViewCallback com.tencent.smtt.export.external.interfaces.IX5WebChromeClient.CustomViewCallback
android.webkit.DownloadListener com.tencent.smtt.sdk.DownloadListener
android.webkit.GeolocationPermissions com.tencent.smtt.export.external.interfaces.GeolocationPermissionsCallback
android.webkit.HttpAuthHandler com.tencent.smtt.export.external.interfaces.HttpAuthHandler
android.webkit.JsPromptResult com.tencent.smtt.export.external.interfaces.JsPromptResult
android.webkit.JsResult com.tencent.smtt.export.external.interfaces.JsResult
android.webkit.SslErrorHandler com.tencent.smtt.export.external.interfaces.SslErrorHandler
android.webkit.ValueCallback com.tencent.smtt.sdk.ValueCallback
android.webkit.WebBackForwardList com.tencent.smtt.sdk.WebBackForwardList
android.webkit.WebChromeClient com.tencent.smtt.sdk.WebChromeClient
android.webkit.WebHistoryItem com.tencent.smtt.sdk.WebHistoryItem
android.webkit.WebIconDatabase com.tencent.smtt.sdk.WebIconDatabase
android.webkit.WebResourceResponse com.tencent.smtt.export.external.interfaces.WebResourceResponse
android.webkit.WebSettings com.tencent.smtt.sdk.WebSettings
android.webkit.WebSettings.LayoutAlgorithm com.tencent.smtt.sdk.WebSettings.LayoutAlgorithm
 
android.webkit.WebStorage com.tencent.smtt.sdk.WebStorage
android.webkit.WebView com.tencent.smtt.sdk.WebView
android.webkit.WebViewClient com.tencent.smtt.sdk.WebViewClient
  1. 将jar包复制到libs文件夹中,然后同步(Sync Project with Gradel Files)。

  2. 如果你用以调试的手机是64位的,请在Main文件夹下新建jniLibs,并在jniLibs中引入32位的so文件,更多信息参考常见问题-您的App无法加载 x5 的原因排查。

  3. 创建BaseApplication,调用TbsDownloader 的 needDownload(Context context, boolean oversea) 方法,并在Menifest文件中声明BaseApplication。

    public class BaseApplication extends Application {
    
    @Override
    public void onCreate() {
        super.onCreate();
        TbsDownloader.needDownload(getApplicationContext(), false);
    }
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  4. 添加com.tencent.smtt.sdk.WebView布局

    <com.tencent.smtt.sdk.WebView
        android:id="@+id/m_web_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    • 1
    • 2
    • 3
    • 4
    • 1
    • 2
    • 3
    • 4
  5. 使用WebView控件,在我的手机上setWebViewClient(client)这一步很重要,其他的WebSettings同系统的WebView效果一样。

    public class MainActivity extends AppCompatActivity {
    
    @Bind(R.id.m_web_view)
    WebView mWebView;
    
    private WebViewClient client = new WebViewClient() {
        // 防止加载网页时调起系统浏览器
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    };
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        mWebView.setWebViewClient(client); 
        WebView.loadUrl("http://news.qq.com/a/20160817/044071.htm");
    }
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
  6. 添加权限

    <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" />
    • 1
    • 2
    • 3
    • 4
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5
  7. 调试运行 
    理论上你手机上如果已经安装了微信、QQ、QQ空间或者QQ浏览器,就已经下载了X5内核,第一次运行跳转到网页后,停留3秒,然后按下Home键,通过杀进程的方式结束应用(直接返回退出无效),然后再次进入应用,进入网页后长按复制,就能看到效果图:这里写图片描述
  8. 如果没有出现上述效果可以尝试如下操作: 
    (1) 下载TBSDemo,安装到手机上; 
    (2) 打开TBSDemo,安装x5内核,重启进入可以看到左上角的x5 core标识,意即X5内核安装成功; 
    (3) 卸载重装你的应用; 
    (4) 第一次打开应用,进入网页后停留3秒,在Home界面通过杀进程的方式结束应用; 
    (5) 再次进入应用,查看TBS是否成功接入。 
    以上步骤中安装TBSDemo其实就是为了安装x5内核,杀进程是因为X5内核一般是在第二次启动应用后生效。
          更多详情请移步官网

你可能感兴趣的:(Android技术汇总,webView,浏览器内核,h5优化)