正确调用腾讯x5内核详解
前言
网上搜了很多腾讯内核调用的文章,不知道是不是复制的同一篇文章,内容几乎一模一样,你们真的有测试过吗?可能是一些大神不屑于写教程,一些小白搞得乱起八糟的代码,误人子弟。。
还是让我来重新写一篇吧。
测试环境
Android Studio 3.3.1
模拟器:雷电模拟器 3.48
真机设备:华为荣耀magic2,小米MAX2,小米平板4
Android版本:原生Android 5.1 MIUIAndroid 7.11 MIUIAndroid 8.1.0 EMUIAndroid 9
系统架构:x86 ARM64
测试报告
腾讯x5内核不支持x86架构的模拟器,雷电模拟器会自动调用系统内核。其他设备正常。
介绍
腾讯浏览服务是致力于优化移动端webview体验的整套解决方案。该方案由SDK、手机QQ浏览器X5内核和X5云端服务组成,解决移动端webview使用过程中出现的一切问题,优化用户的浏览体验。同时,腾讯还将持续提供后续的更新和优化,为开发者提供最新最优秀的功能和服务。
技术特性
其中,SDK是通过共享使用用户手机上微信、手机QQ、空间等软件已经下载好的X5内核,低成本实现对系统webview的替代。该SDK大小只有200+K,接入时仅需修改几行代码。
其中,X5云端服务包括云加速、云安全、云转换三大功能。云加速是通过首屏加速、智能路由、图片压缩等技术保障网页浏览的快、省、悦;云安全是通过代理加密、URL安全检测、JS黑名单管理、负载监控等防范网页被劫持插入广告、保障网页浏览的安全稳定;云转换是使用URL聚合+XPATH的解决方案,解决移动阅读难题。
其中,X5内核相对于系统webview,具有下述明显优势:
- 速度快:相比系统webview的网页打开速度有30+%的提升;
- 省流量:使用云端优化技术使流量节省20+%;
- 更安全:安全问题可以在24小时内修复;
- 更稳定:经过亿级用户的使用考验,CRASH率低于0.15%;
- 兼容好:无系统内核的碎片化问题,更少的兼容性问题;
- 体验优:支持夜间模式、适屏排版、字体设置等浏览增强功能;
- 功能全:在Html5、ES6上有更完整支持;
- 更强大:集成强大的视频播放器,支持视频格式远多于系统webview;
- 视频和文件格式的支持x5内核多于系统内核
- 防劫持是x5内核的一大亮点
为什么要用腾讯的这个内核
1.其实有很多内核可以使用,国外的内核太大,集成后项目会加20多M体积。
2.国内其他内核例如UC内核,需要开发者账号申请以及审核。
3.腾讯现在的内核,拿来就用,无需配置账号什么的。
4.第三方内核主要是对于HTML5以及ES6支持更好以及加载大网页稳定性高一点,其他的都和系统的差不多。
上述介绍,开发者集成后能无需定制能使用的只有1,4,5,7,8,9,10
不过已经够用了。
相关链接
内核首页:https://x5.tencent.com
官方文档:https://x5.tencent.com/tbs/guide/sdkInit.html
SDK地址:https://x5.tencent.com/tbs/sdk.html
准备工作
我们只需要腾讯的jar包和so文件。
下载SDK,可以去官方SKD目录下载。或者点击这儿直接下载。
这儿演示的为完整版本,不带文件功能。
开始使用
基础配置
切换Android Studio项目显示类型为Project
1.复制jar文件到项目libs目录。这个jar文件名太长了,修改文件名"tbs_sdk_thirdapp_v3.6.0.1310_43612_sharewithdownload_withoutGame_obfs_20180706_163319.jar"为"tencentx5.jar"
2.复制liblbs.so文件到项目src\main\jniLibs\armeabi目录下,没有这个目录就自行创建。
3.添加库文件。在tencentx5.jar文件右键->Add as Library
4.兼容so库。由于腾讯没做64位的SO文件,并且目前大多数手机早就64位了,所以得做兼容。官方文档写的很乱:点击查看
在app目录下找到build.gradle文件编辑(Android项目视图的打开build.gradle(Modeule:app)即可)
在android{}这一项目里面添加如下代码
ndk {abiFilters "armeabi", "armeabi-v7a", "x86", "mips"}
现在库就能正常的使用了,开始写代码吧。
开始调用
1.添加权限。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" />
2.找到首页布局文件,默认是约束布局的,我改成了线性布局。其中webview的申明方式为com.tencent.smtt.sdk.WebView,需要加上包名。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><com.tencent.smtt.sdk.WebViewandroid:id="@+id/tencent_webview"android:layout_width="match_parent"android:layout_height="match_parent"></com.tencent.smtt.sdk.WebView>
</LinearLayout>
3.首次使用需要初始化,会从网络下载内核。不管是和QQ,微信共享还是从网络下载,都需要联网。
加载方式可以选择预加载方式,不过要不要这个预加载都可以,只要调用的时候就会自动去下载内核,为了用户体验,可以先预加载。
预加载需要在清单文件申明类名称,
找到AndroidMnifest.xml文件,在application节点下添加android:name=".App"
,其中App文件为类文件,你可以创建一个名为App的java文件。代码如下:
import android.app.Application;
import com.tencent.smtt.sdk.QbSdk;
public class App extends Application {@Overridepublic void onCreate() {super.onCreate();initX5();}private void initX5() {QbSdk.initX5Environment(getApplicationContext(), new QbSdk.PreInitCallback() {@Overridepublic void onViewInitFinished(boolean arg0) {//x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。}@Overridepublic void onCoreInitFinished() {}});}
}
其实上述代码可以不需要。使用的时候反正会自动去查的。
开始调用代码:
mWebView = findViewById(R.id.tencent_webview);if (mWebView.getX5WebViewExtension() != null) {Toast.makeText(getApplicationContext(), "开启成功", Toast.LENGTH_SHORT).show();} else {Toast.makeText(getApplicationContext(), "开启失败", Toast.LENGTH_SHORT).show();}mWebView.getSettings().setJavaScriptEnabled(true);mWebView.loadUrl("http://debugtbs.qq.com");mWebView.setWebViewClient(new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(WebView webView, String s) {mWebView.loadUrl(s);return true;}});
使用方法和系统的webview一样,不过导入包一定不要导入错了,腾讯的包叫com.tencent.smtt.sdk.WebView
。
其中可以使用方法mWebView.getX5WebViewExtension()
判断是否载入成功了内核,返回不为null则为载入成功。
打开的页面为腾讯x5调试地址,可以自己进行调试。
内核成功调用了,长按文字会显示复制和翻译按钮。那个水滴类型选择器,所有系统制内容也是这样的,不知道哪个小白说的x5内核调用成功了就是水滴复制按钮。
系统内核长按复制会显示这个,每个系统的按钮不一样
后面使用方法基本和系统的一样了,网页视频以及文件选择,以后用到了再补充吧。
正确调用腾讯x5内核详解相关推荐
- php调用C代码的方法详解和zend_parse_parameters函数详解
来源:http://my.oschina.net/Customs/blog/490873 http://blog.csdn.net/super_ufo/article/details/3863731 ...
- 非常好的Linux编译内核详解 - -
转载: http://blog.chinaunix.net/uid-263488-id-2138150.html 非常好的Linux编译内核详解 - - 一.内核简介 内核,是一个操作系统的核心.它 ...
- 腾讯x5加载本地html乱码,腾讯X5内核播放器遇到的问题
最近在写一个和视频有关的项目,用到了腾讯x5内核的webview.利用webview调用本地js文件来播放视频.事情本身很顺利,但是在过程中遇到了一些小插曲,在此记录一下. 1.去除播放器中的广告 正 ...
- 腾讯小程序 java编写_微信小程序 使用腾讯地图SDK详解及实现步骤
微信小程序 使用腾讯地图SDK详解及实现步骤 近期在做一款彩票服务类项目中用到了腾讯地图提供的小程序解决方案,拿来给大家分享一下! 使用起来非常简单,就是一些功能还有待完善. 官方文档:http:// ...
- android 腾讯x5内核 浏览器
1.浏览器内核: 主流浏览器内核介绍(前端开发值得了解的浏览器内核历史) 浏览器内核历史介绍: 在android 4.4之前,浏览器用的还是webkit 在android 4.4之后,google就抛 ...
- Android 抛弃原生WebView,使用腾讯X5内核、并加入广告拦截。
大家都不知道原生的WebView 存在各种坑.各种适配问题. 最近在使用,总会出现DNS被拦截的情况.预览了各个大神的论坛与博客. 发现可以更改WebView内核.找到了比较火的两个. 分别是:腾讯X ...
- 微信小程序 使用腾讯地图SDK详解及实现步骤
信小程序 使用腾讯地图SDK详解及实现步骤 微信小程序JavaScript SDK: 官方文档:http://lbs.qq.com/qqmap_wx_jssdk/index.html 步骤: 1.申请 ...
- x5内核 ajax base64,腾讯X5内核 WebView 实践篇
基于腾讯 X5 内核的WebView开发: 1.onPageFinished 2.onProgressChanged() 3.合适的时机获取页面元素 业务需求是在 html 中注入 js脚本实现阅读模 ...
- 基于腾讯x5内核的精简版浏览器
X5Browser github地址 https://github.com/iamlocky/X5Browser 基于腾讯x5内核的精简版浏览器 适用于需要单独的页面显示web内容,官方webview ...
- Android 用腾讯X5内核加载 word ppt 先下载在加载。
Android 用腾讯X5内核加载 word ppt 先下载在加载. 第一步 下载Sdk 导入项目 第二步 下载 pdf word到本地 1. 调用下载 DownloaderTask task ...
最新文章
- 机器学习(MACHINE LEARNING)MathWorks系列教程
- Python+selenium 自动化-基本环境搭建,调用selenium库访问百度查询天气实例演示
- pytorch | transpose、permute、view、contiguous、is_contiguous、reshape
- 明天开始新的作息时间了
- Spring Mvc 整合 Mybatis
- 阿里云2020财年营收超400亿 同比增长62%
- 网络新手ip隐藏器_什么是高防IP,高防IP原理是什么
- Ace Admin安装配置教程
- 七宗罪----人性本恶
- [国家集训队]Tree I
- vue实现画出页面二维码的3种办法
- 如何向iphone手机里导入音乐?
- 分页插件中关于PageInfo
- YAML详解 是什么
- Linux下命令行使用技巧
- C51单片机之keil编程入门(一)
- Mysql查询条件为大于时,不走索引失效问题排查
- 基于FPGA的频率计设计
- DA, DH, MDA, MDH,MSA到底是什么
- 网易考试大题知识盲区之B树、B+树、B*树