×

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

96
骑小猪看流星
2018.03.06 15:43* 字数 1959

本文意在了解掌握并快速集成腾讯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地址),文章请勿滥用,也希望大家尊重笔者的劳动成果,谢谢。

Android 原创印记
Web note ad 1