【转】Android静态集成X5内核

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

大家好,欢迎来到IT知识分享网。

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

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

一、获取X5内核的方法

二、拷贝内核

拷贝到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_ABIS var 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,设置的的监听导致内存泄漏,重置为null QbSdk.setTbsListener(null) val map = HashMap<String, Any>(2) map[TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER] = true map[TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE] = true QbSdk.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 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/122395.html

(0)
上一篇 2025-10-17 07:15
下一篇 2025-10-17 07:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信