TBS腾讯浏览服务WebView

2017-07-17  本文已影响570人  zhetengxiang

起因

Android原生WebView存在痛点:

  1. 存在内存泄漏
  2. 4.4以前的版本是WebKit的内核,4.4以后才换成chromium的内核,碎片化的问题导致各个版本之间的运行效率参差不齐。

TBS X5WebView

  1. 官网 https://x5.tencent.com/tbs/
  2. 接入指南 https://x5.tencent.com/tbs/guide/sdkInit.html

优点

一. 官方描述

二. 测试发现,对H5页面不能进行缩放的页面会进行放大处理,更方便查看文字。

缺点

  1. 不支持cordova[crosswalk支持,但是会至少增加APK18M左右]

接入步骤

一. 下载 SDK jar 包放到工程的libs目录下,将源码和XML里的系统包和类替换为SDK里的包和类[参考官网对应关系]
二. 配置so文件

android {
    ...
    defaultConfig {
        ...
        ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
        }
    }
}

三. 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" />

四. 兼容处理

android:configChanges="orientation|screenSize|keyboardHidden"
android:windowSoftInputMode="stateHidden|adjustResize"
getWindow().setFormat(PixelFormat.TRANSLUCENT);(这个对宿主没什么影响,建议声明)
<item name="android:windowIsTranslucent">false></item>
webview.setLayerType()
webview.setDrawingCacheEnabled(true);

五. 混淆[http://res.imtt.qq.com/TES/proguard_20160822.zip]

六. 验证X5内核是否加载成功
长按看是否出现复制,看菜单下方是否有两个蓝色的实心小水滴。

注意

  1. App中webView全部替换为X5的webView,否则不起效果
  2. sdk扫描工具.exe 扫描的结果text文本只显示了"扫描完成!",不起作用
  3. 不设置setWebViewClient,默认会打开浏览器浏览网址,原生的没有。为了更好的兼容性建议都设置上
    override fun shouldOverrideUrlLoading(webView: WebView, url: String): Boolean {
        if (!TextUtils.isEmpty(url)&&url.startsWith("http")){
            webView.loadUrl(url)
            return true
        }else{
            return super.shouldOverrideUrlLoading(webView, url)
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读