【转】Android静态集成X5内核

项目中的老机器使用webview 无法加载vue3打包的网页,只能用独立的webview内核,采用静态加载x5内核的方式, 以下内容转自简书作者漆先生的博客,仅用作备份记录

之前在项目中在线集成的X5内核,但是效果不好,只有手机设备这种装过微信QQ的机器加载成功的概率才比较理想,其它工程机器基本都是失败的,因此考虑静态集成到项目里边。

一、获取X5内核的方法

打开调试页,安转内核,logcat过滤:PLUGIN-TbsDownloadDebugPlugin ,可以看到下载链接
参考文章:https://blog.csdn.net/qq_34205629/article/details/122375262#comments_20014428

二、拷贝内核

拷贝到assets目录下,初始化的时候再拷贝到cache目录下,其它目录也可

1.拷贝方法

public static String getAssetsCacheFile(Context context, String fileName) {File cacheFile = new File(context.getCacheDir(), fileName);try {InputStream inputStream = context.getAssets().open(fileName);try {FileOutputStream outputStream = new FileOutputStream(cacheFile);try {byte[] buf = new byte[1024];int len;while ((len = inputStream.read(buf)) > 0) {outputStream.write(buf, 0, len);}} finally {outputStream.close();}} finally {inputStream.close();}} catch (IOException e) {e.printStackTrace();}return cacheFile.getAbsolutePath();
}

三、安装本地内核

根据系统abi选择32位和64位的tbs内核,安装本地内核并初始化,

private fun initX5() {if (QbSdk.getTbsVersion(applicationContext) == 0) {Logger.i(TAG, "Install")val phoneCpus = Build.SUPPORTED_ABISvar fileName = ""if (phoneCpus[0] == "arm64-v8a") {fileName = "046007_x5.tbs.apk"Log.i(TAG, "64bit $fileName")} else if (phoneCpus[0] == "armeabi-v7a") {fileName = "045912_x5.tbs.apk"Log.i(TAG, "32bit $fileName")}if (fileName.isBlank()) {Log.i(TAG, "no support")initX5Setting()}val newPath = FileUtil.getAssetsCacheFile(applicationContext, fileName)Log.i(TAG, "path $newPath")QbSdk.reset(applicationContext)QbSdk.installLocalTbsCore(applicationContext, fileName.substring(0, fileName.indexOf("_")).toInt(), newPath)QbSdk.setTbsListener(object : TbsListener {override fun onDownloadFinish(i: Int) {}override fun onInstallFinish(i: Int) {Logger.i(TAG, "onInstallFinish: $i")initX5Setting()}override fun onDownloadProgress(i: Int) {}})} else {Logger.i(TAG, "onlyInit")initX5Setting()}
}private fun initX5Setting() {//避免第一次打开需要安转X5,设置的的监听导致内存泄漏,重置为nullQbSdk.setTbsListener(null)val map = HashMap<String, Any>(2)map[TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER] = truemap[TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE] = trueQbSdk.initTbsSettings(map)Logger.i(TAG, "canLoadX5: ${QbSdk.canLoadX5(applicationContext)}|TbsVersion:" + QbSdk.getTbsVersion(applicationContext))
}

四、内核地址

32位(45912)
链接:https://pan.baidu.com/s/1pz_HSnzdzvEQ9RI5ohOVQg
提取码:ad9l
64位(46007)
链接:https://pan.baidu.com/s/1E1wgW1-ztHDg5xANDcePog
提取码:sil3

备份下载

32位(45912)链接: https://pan.baidu.com/s/1MAJpPkTjtFY1gqz9myuYsw 提取码: 5v3r 

64位(46007)链接: https://pan.baidu.com/s/1WmXGBjWb5yTGGPfF2Z_Qcw 提取码: 3p5e 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/37539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于STM32的智能电池管理系统

目录 引言环境准备智能电池管理系统基础代码实现&#xff1a;实现智能电池管理系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景&#xff1a;电池管理与优化问题解决方案与优化收尾与总结 1. 引言 智能电池管理系统&#xff08;Ba…

【昇思25天学习打卡营打卡指南-第十三天】ShuffleNet图像分类

ShuffleNet图像分类 ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一样主要应用在移动端&#xff0c;所以模型的设计目标就是利用有限的计算资源来达到最好的模型精度。ShuffleNetV1的设计核心是引入了两种操…

GPT-5 一年半后发布,打开人工智能新世纪

关于GPT-5一年半后发布的消息&#xff0c;这一预测主要基于OpenAI首席技术官Mira Murati的采访和声明。然而&#xff0c;需要明确的是&#xff0c;这个时间点&#xff08;即2025年底或2026年初&#xff09;已经与早期传闻有所不同&#xff0c;显示了OpenAI对产品质量的重视&…

react18.x+播放文本内容

需要调接口将文字传递给后端将文字转换成音频文件&#xff0c;然后播放&#xff0c;同时每次播放不同文本时&#xff0c;当前播放的文本需要暂停&#xff0c;切换到播放新点击的文本 可以设置缓存播放过的音频&#xff0c;也可以不设置缓存&#xff1a; 设置缓存的代码如下&am…

骁龙相机拍照流程分析

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 1.deliverInputEvent 拍照点击事件处理 2.submitRequestList Camera 提交拍照请求 3.createCaptureRequest 拍照请求帧数 骁龙相机通过binder 数据传输…

idea 内存参数修改不生效问题解决 VM参数设置不生效解决

很多人配置idea 内存参数&#xff0c;怎么配置都不生效&#xff0c;主要原因是配置文件用的不是你修改的那个。 系统环境变量中的这个才是你真正要修改的配置文件。 找到并修改后保存&#xff0c;重启idea就可生效

C++ | Leetcode C++题解之第208题实现Trie(前缀树)

题目&#xff1a; 题解&#xff1a; class Trie { private:vector<Trie*> children;bool isEnd;Trie* searchPrefix(string prefix) {Trie* node this;for (char ch : prefix) {ch - a;if (node->children[ch] nullptr) {return nullptr;}node node->children[…

人工与智能系统之间的交互方式

人工与智能系统之间的交互方式 #mermaid-svg-xSsFZWak2bsyV0un {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-xSsFZWak2bsyV0un .error-icon{fill:#552222;}#mermaid-svg-xSsFZWak2bsyV0un .error-text{fill:#5522…

分词算法在自然语言处理中的基本原理与应用场景

分词算法在自然语言处理中的基本原理与应用场景 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 分词是自然语言处理&#xff08;NLP&#xff09;中的重要基础…

python脚本 限制 外部访问 linux服务器端口

注意&#xff1a;该脚本会清空linux防火墙的filter表的规则和用户自定义链路 脚本的效果是将端口限制为仅服务器内部访问&#xff0c;提高服务的安全性&#xff0c;稳定性 可以提供ip地址白名单 具体脚本&#xff1a; #!/usr/bin/python3 import argparse, subprocess, sys,…

13_网络安全

目录 网络安全协议 网络安全协议 PGP协议 网络安全技术 防火墙技术 入侵检测系统 入侵防御系统 杀毒软件 蜜罐系统 计算机病毒与木马 网络安全协议 网络安全协议 物理层主要使用物理手段隔离、屏蔽物理设备等&#xff0c;其他层都是靠协议来保证传输的安全&#xff…

美国服务器租用详细介绍与租用流程

在数字化时代&#xff0c;服务器租用已成为许多企业和个人拓展业务、存储数据的重要选择。美国作为全球科技发展的前沿阵地&#xff0c;其服务器租用服务也备受瞩目。下面&#xff0c;我们将详细介绍美国服务器租用的相关知识及租用流程。 一、美国服务器租用简介 美国服务器租…

中英双语介绍美国的州:新泽西州(New Jersey)

中文版 新泽西州&#xff08;New Jersey&#xff09;位于美国东北部&#xff0c;是美国面积较小但人口密度较高的州之一。新泽西州因其便利的地理位置、发达的经济和丰富的历史文化而闻名。以下是对新泽西州各方面的详细介绍&#xff1a; 人口 截至2020年&#xff0c;美国人…

引领汽车软件开发走向ASPICE认证之路

亚远景科技与ASPICE认证的关系可以从以下几个方面来阐述&#xff1a; (要明确的是&#xff1a;在ASPICE行业中专业来说&#xff0c;ASPICE项目是没有认证&#xff0c;而只有评估。不过&#xff0c;为了方便沟通&#xff0c;人们常将这一评估过程称为认证。&#xff09; 行业专…

tomcat定时重启

Tomcat定时重启&#xff08;linux&#xff09; 1. 编写脚本 在tomcat的bin目录下&#xff0c;使用vim restart.sh&#xff0c;编写restart.sh脚本&#xff0c;插入一下内容&#xff0c;最后并保存&#xff01; #!/bin/bash# 初始化全局环境变量 . /etc/profilecd /usr/loca…

探索数据结构:队列的的实现与应用

&#x1f511;&#x1f511;博客主页&#xff1a;阿客不是客 &#x1f353;&#x1f353;系列专栏&#xff1a;渐入佳境之数据结构与算法 欢迎来到泊舟小课堂 &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 一、队列的概念 队列是一个线性的数据结构&#…

windows环境下创建python虚拟环境

windows环境下创建python虚拟环境 使用virtualenv库创建虚拟环境&#xff0c;可使不同的项目处于不同的环境中 安装方法&#xff1a; pip install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple pip install virtualenvwrapper-win -i https://pypi.tuna.tsinghua…

Spring Cloud Alibaba之负载均衡组件Ribbon

一、什么是负载均衡&#xff1f; &#xff08;1&#xff09;概念&#xff1a; 在基于微服务架构开发的系统里&#xff0c;为了能够提升系统应对高并发的能力&#xff0c;开发人员通常会把具有相同业务功能的模块同时部署到多台的服务器中&#xff0c;并把访问业务功能的请求均…

谈谈WebComponents | 前端开发

一、 源起 让我们以一个例子开始。 假设我们要做一个环形进度条&#xff0c;它可以&#xff1a; 1、根据进度数值的不同&#xff0c;计算出百分比&#xff0c;以渲染对应的角度值。 2、根据设置的进度不同&#xff0c;我们用不同的颜色加以区分。 3、在环的中间我们以动画递增的…

小程序、APP对接广告联盟进行广告变现有什么区别?

小程序VS APP对接广告联盟有什么区别&#xff1f; 开发完成的小程序对接广告联盟广告变现&#xff0c;开发完成的APP对接广告联盟有什么区别&#xff1f; 首先小程序对接广告联盟&#xff0c;无论是微信小程序还是抖音小程序都只支持对接单一的广告联盟接入。抖音小程序只支持…