美文网首页androidandroid开发专题开发
Android-X5Web详细集成步骤(原创)

Android-X5Web详细集成步骤(原创)

作者: 骑小猪看流星 | 来源:发表于2018-03-06 15:43 被阅读2227次

    本文意在了解掌握并快速集成腾讯X5系统内核,更好的提高Android与H5在应用上的渲染交互效果;X5web内核下该如何有效的管理cookie;X5webview下的ndk基本配置说明;X5webview常见问题等等。

    文章使用到的官方资料:

    腾讯浏览服务

    腾讯浏览服务技术指南

    腾讯浏览服务接入技术文档

    腾讯浏览服务SDK、API、Demo下载

    1:什么是腾讯X5Web?

    移动互联网时代,Web成为各超级App的通用基础技术。Web浏览不再局限于传统浏览器,相反已经进入绝大部分App的各类应用场景。越来越多的App基于Hybrid模式开发和部署业务。腾讯浏览服务(TBS,Tencent Browsing Service)整合腾讯底层浏览技术和腾讯平台资源及能力,提供整体浏览服务解决方案。腾讯浏览服务面向应用开发商和广大开发者,提供浏览增强,内容框架,广告体系,H5游戏分发,大数据等服务,能够帮助应用开发商大幅改善应用体验,有效提升开发,运营,商业化的效率。传统系统内核(Webview)存在适配成本高、不安全、不稳定、耗流量、速度慢、视频播放差、文件能力差等问题,这是移动应用开发商在进行Hybrid App开发时普遍面临的难题。腾讯浏览服务基于腾讯X5内核解决方案(包括内核和云服务),能够有效解决传统移动web技术面临的普遍问题,同时能极大扩展应用(Hybrid App)内浏览场景的服务能力。

    2:腾讯X5Web的优点:

    腾讯X5宣传优点

    3:开始集成

    A:集成前准备

    个人建议还是首先运行腾讯下腾讯的X5Demo,不仅对X5有个初步印象,而且方便对项目中的功能进行筛选使用。下载demo,导入AS(笔者的Android studio 是3.0版本)导入后,就报了第一个错误...

    官方Demo的错误 官方项目导入结构图

    细心的老司机可能一眼就发现了问题,这里就不多说问题直接给大家提供解决办法:

    解决办法

    在项目的 build.gradle里面(绿色区域)按照笔者为大家截图(也就是红色区域)的位置,在对应区域添加红色段落内代码即可。(代码内容如下)

    buildscript {

    repositories{ jcenter() }

    dependencies{ classpath "com.android.tools.build:gradle:2.3.3" }

    }

    repositories {

    maven {url 'http://repo1.maven.org/maven2' }

    }

    按照上面步骤,等待项目构建完毕以后,Demo理论上就可以正常运行了。(如果上述方法还是不行那只能说脸黑自行解决咯)项目成功运行后的Demo效果如下:

    X5运行图

    B:基本配置

        I:权限配置

    权限配置

        II:jar包配置

    jar包jniLibs配置

    III:项目 build.gradle配置:

    配置ndk

    由于X5暂时不提供64位so文件,为保证64位手机能正常加载x5内核,可以在项目依赖中去配置ndk。为什么要配置ndk以及如何配置,详细请参考 X5Web配置ndk的官方详细说明

    C:开始使用

    首先:将Android系统源码和XML里的系统包和类替换为腾讯X5WebSDK里的包和类,

    替换资源

    举个例子就是不要使用android系统的webview,而是使用腾讯的webview。当然,具体的替换规则可以参考文章前面的链接,里面有详细的使用说明。

    其次:初始化设置

    Application的配置

    在自定义application里面进行x5内核初始化接口,别忘记了在清单文件里面要配置自定义application。

    接着:关于cookie的管理和使用

    官方文档告知我们:com.tencent.smtt.sdk.CookieManager和com.tencent.smtt.sdk.CookieSyncManager的相关接口的调用,需要在接入SDK后,放到创建X5的WebView之后(也就是X5内核加载完成)进行;否则,cookie的相关操作只能影响系统内核。

    图下给大家提供了一种cookie在X5的使用策略(也是笔者的另一篇文章)需要了解的可以移步下面链接。

    Cookie的有效管理

    然后:X5Web兼容视频播放的使用

    如果有视频播放的需求,需要在享受页面视频的完整播放体验需要在页面的Activity(配置文件)需要声明android:configChanges="orientation|screenSize|keyboardHidden";

    网页中的视频进入屏幕的时候,可能出现闪烁的情况,需要如下设置:Activity在onCreate时需要设置:getWindow().setFormat(PixelFormat.TRANSLUCENT);(这个对宿主没什么影响,建议声明)

    值得一提的是,以下接口禁止(直接或反射)调用,避免视频画面无法显示:

    webview.setLayerType() ; webview.setDrawingCacheEnabled(true);

    最后:建议包装x5webview

    如何包装?也就是自定义x5webview,建议:可以先花一点时间看一下官方的Demo,然后根据自身业务集成使用。当然,笔者自己也封装了一些最基本的功能 X5WebView的封装 大家可以参考下(写得不好的话请见谅)

    常见问题:

    问题一:

    如何拿到X5webview的加载进度,比如在Html加载前,客户端这边需要展示一张图片,当加载完毕以后这张图片就隐藏,然后显示需要展示的html内容?

    解决:在WebChromeClient这个类里面(import com.tencent.smtt.sdk.WebChromeClient ; )有一个监听进度的方法,如下图

    监听进度

    然后通过 setWebChromeClient( webChromeClient );即可完成进度的监听。

    问题二:如何去除滚动条?

    解决:通过X5webview的 IX5WebViewExtension类对象,可以帮我们去除滚动条,参考代码如下

    去除滚动条

    问题三:如何去除广告?

    使用的小伙伴反馈说H5上面有广告,这里给两种思路去解决,如果有更好的方法请直接在评论区提出:

    1:可以使用Https

    2:对加载的url进行简单的判断(可以跟后台讨论设置规则)允许的域名进行放行 其他就拦截,不允许的则拦截

    点击这里了解更多的X5问题大杂烩 X5问题大汇总

    腾讯X5的基本介绍和使用就到这里,当然可能有很多问题还没有发现,笔者在项目中如果有遇到任何问题会及时更新文章,各位看官有任何问题请直接联系笔者或者评论区下提问。当然也希望各位老铁多多点赞支持,如果写的不好还请大家多多包涵。

    说完了基本使用,我们再谈封装,关于X5WebView的基本封装,大家可以参考我的另一篇文章 X5WebView封装 里面含源码及使用说明,望大家多多支持。

    如果这篇文章对你有帮助,希望各位看官留下宝贵的star,谢谢。

    Ps:著作权归作者所有,转载请注明作者, 商业转载请联系作者获得授权,非商业转载请注明出处(开头或结尾请添加转载出处,添加原文url地址),文章请勿滥用,也希望大家尊重笔者的劳动成果,谢谢。

    相关文章

      网友评论

      • 威威并不威:请问webview除了js方法可以修改元素还有其他方法吗
      • 0578a6742bfc:为啥你的AS 图标 和我的不太一样啊 怎么弄的
        0578a6742bfc:@骑小猪看流星 在哪里下载的啊 求地址
        骑小猪看流星:@MrHaddis 设置主题即可
      • OvenChou:有好有坏略坑。。。
        骑小猪看流星:取其精华去其糟粕:yum:
      • 08ff4c67648a:史上最坑爹的SDK,莫名其妙的bug,莫名其妙的crash,莫名其妙的打不开应用,效果好不好,谁用谁知道。
        PS:我们用这玩意还背过故障的:joy: :joy:
        骑小猪看流星:@CodeMonkey_cb0f 初始化等这些配置问题算比较容易处理的吧 朋友可以参考下开源项目
        08ff4c67648a:@骑小猪看流星 初始化都能crash,还咋用他的优点= =
        骑小猪看流星:是的 但是我们尽量用它的优点 规避缺点额
      • 清明捉鬼:不是说X5基于webkit有很多bug吗?
      • a9da78ea2416:你好,有源码的地址吗?
        骑小猪看流星:有的 源码地址:https://github.com/zuowutan/ShareX5WebViewDemo
      • thaixp:刚好在接,借鉴了:relaxed:
      • ed12faf4c4de:这种肯定需要根据自身业务来自定义webview,就不知道大佬什么时候来个汇总给我看看, 嘿嘿
        骑小猪看流星:大兄弟,文章已经撸出来了,可以看下最新的文章
        骑小猪看流星:OK 没问题 答应你了:yum:

      本文标题:Android-X5Web详细集成步骤(原创)

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