美文网首页
TBS腾讯浏览服务WebView

TBS腾讯浏览服务WebView

作者: zhetengxiang | 来源:发表于2017-07-17 17:32 被阅读570次

    起因

    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

    优点

    一. 官方描述

    • 速度快:相比系统webview的网页打开速度有30+%的提升;

    • 省流量:使用云端优化技术使流量节省20+%;

    • 更安全:安全问题可以在24小时内修复;

    • 更稳定:经过亿级用户的使用考验,CRASH率低于0.15%;

    • 兼容好:无系统内核的碎片化问题,更少的兼容性问题;

    • 体验优:支持夜间模式、适屏排版、字体设置等浏览增强功能;

    • 功能全:在Html5、ES6上有更完整支持;

    • 更强大:集成强大的视频播放器,支持视频格式远多于系统webview;

    • 视频和文件格式的支持x5内核多于系统内核

    • 防劫持是x5内核的一大亮点

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

    缺点

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

    接入步骤

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

    • app\src\main\jniLibs\armeabi\liblbs.so
    • app\build.gradle配置
    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" />
    

    四. 兼容处理

    • 在AndroidManifest.xml中设置
    android:configChanges="orientation|screenSize|keyboardHidden"
    android:windowSoftInputMode="stateHidden|adjustResize"
    
    • Activity在onCreate时需要设置
    getWindow().setFormat(PixelFormat.TRANSLUCENT);(这个对宿主没什么影响,建议声明)
    
    • 在非硬绘手机和声明需要controller的网页上,视频切换全屏和全屏切换回页面内会出现视频窗口透明问题
    <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)
            }
        }
    

    相关文章

      网友评论

          本文标题:TBS腾讯浏览服务WebView

          本文链接:https://www.haomeiwen.com/subject/morhbttx.html