现如今,渠道上架应用或游戏,对敏感信息合规检测还是比较严格的,一般都会采用自动化 + 人工检测。

比如上架审核一个无需相机和录音权限的包体,绝大部分会遭到拒审(除非漏检?)!

本次遇到的就是类似情况,内嵌 H5 的 Unity 游戏,之前是使用原生的 WebView 加载 H5 游戏,

可是实际运行发现加载速度未达到预期效果,调研发现 X5 WebView 据说还可以(有质的提升?)!

腾讯浏览服务 —— 官网


(图:来自官方)

好了!!!

加载速度问题找到了解决方案

原生 WebView 替换为 X5 WebView

具体实施很清晰方便,按照官方文档接入即可。

官方文档指出的是 在线下载内核 完成内核加载等操作,这是使用方式一

聪明的你们肯定略知还有方式二离线安装内核

嗯,总结出来了,x5 内核使用的两种方式:

  • 在线安装
  • 离线安装

在线安装是大概像这样

HashMap map = new HashMap();
map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);QbSdk.setDownloadWithoutWifi(true);
QbSdk.initTbsSettings(map);
QbSdk.setTbsListener(new TbsListener());boolean need = TbsDownloader.needDownload(context, false);
QbSdk.initX5Environment(context, mPreInitCallback);
private static QbSdk.PreInitCallback mPreInitCallback = new QbSdk.PreInitCallback() {@Overridepublic void onCoreInitFinished() {Log.d(TAG, "tbs init finished");}@Overridepublic void onViewInitFinished(boolean isSupportX5) {if (isSupportX5) {//已经有可用的内核,无需下载Log.d(TAG, "support x5");} else {Log.d(TAG, "not support x5");//重置并清除缓存等,开始下载线上内核QbSdk.reset(mContext);TbsDownloader.startDownload(mContext);}}};

离线安装大概是这样

离线安装重点就是 installLocalTbsCore本地内核安装包

isInitTbs = QbSdk.canLoadX5(context);
if(!isInitTbs){//拷贝内核文件到自定义外部存储目录 (一个 apk)FileUtils.copyAssets(assetsTbsApkPath,externalPath);
}HashMap<String, Object> map = new HashMap<>(2);
map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);
QbSdk.initTbsSettings(map);//最新版本说 canLoadX5 过时,不过当前没有使用最先版本,有兴趣自行查阅
//当前使用版本是:tbs_sdk_thirdapp_v4.3.0.253_44153.jar
boolean canLoadX5 = QbSdk.canLoadX5(context);
if (canLoadX5) {//已有可用内核,无需安装本地内核,直接初始化preInit(context);return;
}//开始安装本地内核
beginInstallLocalApk(context);
private void beginInstallLocalApk(final Context context) {QbSdk.reset(context);QbSdk.setTbsListener(new TbsListener() {@Overridepublic void onDownloadFinish(int i) {LogUtil.d(TAG, "onDownloadFinish code = " + i);}@Overridepublic void onInstallFinish(int code) {LogUtil.d(TAG, "onInstallFinish code = " + i);int tbsVersion = QbSdk.getTbsVersion(context);//这里是关注重点,本地安装成功之后是需要初始化的,切记preInit(context);}@Overridepublic void onDownloadProgress(int i) {LogUtil.d(TAG, "onDownloadProgress code = " + i);}});//getTBSFileDir: 这个路径是你之前从 assets 拷贝内核到外部存储目录的位置QbSdk.installLocalTbsCore(context, 46007, FileUtils.getTBSFileDir(context).getPath() + File.separator + APK_NAME);//读写权限还是要的String[] permissions = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};boolean hasPermission = PermissionUtils.checkPermissions(context, permissions);if (!hasPermission) {LogUtil.d(TAG, "requestPermissions");Activity activity = CoreManager.getInstance().getActivity();PermissionUtils.requestPermissions(activity, permissions);}}

如何获取内核安装包,可看看某乎文章 呼呼呼呼呼呼呼呼~~

回归标题内容

上述一番操作之后,估计已能成功通过两种方式接入 x5!

兴高采烈,运行 Demo,加载 H5 游戏,一番操作惊呆了

听说 TBS x5 Webview 加载 H5 游戏提示申请相机权限相关推荐

  1. vivo oppo 手机8.1.0 webview加载H5白屏问题

    记录一个webview 的深坑. vivo oppo 手机8.1.0 webview加载H5白屏问题 查看log发现: 神奇的报错 解决办法: 删除掉配置文件里的8.0的新特性适配: 感谢stacko ...

  2. webView加载H5页面出现空白页的解决办法

    最近在做一个理财的项目,其中用到的H5页面比较多,在项目后期出现了很多bug,今天介绍下webView加载H5出现空白的解决办法 首先介绍下出现问题的场景,我们在一个Activity中镶嵌了一个H5的 ...

  3. 鸿蒙系统中的 WebView 加载H5页面出现net::ERR_CLEARTEXT_NOT_PERMITTED的解决方法

    目前在学习鸿蒙系统开发相关的应用,在加载H5页面的时候,在页面上显示出现这也错误提示 net::ERR_CLEARTEXT_NOT_PERMITTED,百度了一番,显示的结果都是在安卓系统上的解决办法 ...

  4. Android WebView加载H5音视频自动播放、关闭Activity停止播放

    在Android加载H5,实现H5中的音视频自动播放  在Activity中添加代码: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELL ...

  5. Android使用WebView加载Url时提示“请在微信客户端打开链接”

    前言 最近在使用webView加载一个url时 提示弹出这样的图片 解决方法 在设置webView属性的时候 修改ua参数 我们通过这个链接拿到自己的ua参数 点击获取自己的UA参数 如图所示 我用的 ...

  6. iOS12 系统 webView加载H5页面,反复点击网页中视频播放 退出视频全屏 闪退解决方式。

    iOS 12系统webView 对H5播放器 有不兼容迹象,如果加载的H5视频是全屏播放的,频繁切换容易造成闪退. 在这个时候,就需要 前端 和 后台一起协商 解决这个问题. 其实这个问题很容易解决的 ...

  7. flutter 中使用 WebView加载H5页面异常net:ERR_CLEARTEXT_NOT_PERMITTED

    最近有个flutter项目中根据搜索结果跳转到相应的H5页面发现老是报错,曾现在闲暇拉出来解决哈 先来看一个搜索功能的测试 已进入详情页面就提示错误,尴尬了. 只有去检测代码了撒 Search.dar ...

  8. Android WebView加载h5打开麦克风与摄像头的权限问题

    目录 快速处理 app向系统申请录音与相机权限 h5向app申请录音和相机权限 详细解答 app权限与h5权限 录音与麦克风 默许的风险 最佳实践 Android webview h5 麦克风权限,摄 ...

  9. 关于WebView加载H5页面下载文件和下载完毕后自动打开文件

    前段时间有个项目需要在H5页面里下载文档文件,由于项目需求这里采用Android系统自带DownloadManager来进行后台自动下载管理,我们只需要稍微设置几个参数就进行文件下载了,并且下载进行时 ...

最新文章

  1. 通过 Mysql 官网配置更新本地的mysql源
  2. Python全栈之路Day13
  3. 【POJ 3274】Gold Balanced Lineup (stl map )设计hash表,处理碰撞
  4. 联发科技嵌入式_英特尔联手联发科技重回移动5G征途,能否与高通抗衡?
  5. c#打印程序原码_C#程序打印新行
  6. vgp虚拟路面_长安大学工程机械国家虚拟仿真实验教学中心|公路路面摊铺施工虚拟仿真实验|...
  7. Unity 3D第三人称视角、用途广泛限定角度(视角不能360度翻转)
  8. IDEA隐藏不需要的文件
  9. Leetcode 509. Fibonacci Number
  10. SparkStreaming读取本地文件进行wordCount
  11. 8种企业数据采集工具分析
  12. 【报告分享】连锁经营行业全面费用管理数字化白皮书-亿欧汇联易(附下载)
  13. 大众点评优略点评。。
  14. 【Android】实现自定义标题栏
  15. 高德地图定位误差_高德地图定位api以及导航和定位 位置的偏差
  16. 校园招聘-2017美团后台开发内推笔试编程题
  17. jQuery生成动态表格
  18. 在Dreamwaver上基于HTML编写自己的
  19. 自动测试如何选择自动化测试框架_机器擅长回归测试,人类善于寻找Bug _Pekka Klärck
  20. PCL超体素分割代码vs2019+pcl1.11.1实现

热门文章

  1. 机器学习笔记(完结~)
  2. thinkphp使用echarts_插件highcharts在thinkphp中的使用
  3. Java中省市区三级联动,附前后台及数据库
  4. 【jenkins】功能简介
  5. 黑客最喜欢使用的编程语言,居然是它
  6. 项目实战——旅行社导航页
  7. 删除顺序表中下标i~j的所有元素
  8. sql server 拿第二条数据
  9. 【OverFeat】Integrated Recognition, Localization and Detection using Convolutional Networks(2014) 全文翻译
  10. 出身985,工作996,劝退35:37岁迟来的醒悟