序言
最近在webview上做兼容,发现了一个原生浏览器不兼容新版本vue3的语法了,导致了
无法渲染,这不,又出现了这个库
源码
特点
- 本地化加载内核,当然啦,也可以加个下载业务代码,就可以实现线上下载了,然后安装到本地,
- 支持
kotlin
版本 和compose
版本
使用
这里主要是贴一下主要代码
拿kotlin 版本来做例子
kotlin
private fun loadInstall() {
//判断内核是否存在
if (!QbSdk.canLoadX5(this)) {
val dialog = showProgressDialog(this)
//执行安装业务
startInstallX5LocationCore(this, onSucceed = {
Log.e("xx", "QbSdk. 安装成功")
dialog.dismiss()
runOnUiThread {
restartApp()
}
}, onFailed = {
Log.e("xx", "QbSdk. 安装失败 ${it}")
runOnUiThread {
dialog.dismiss()
Toast.makeText(this@SplashActivity, it, Toast.LENGTH_SHORT).show()
}
})
} else {
Toast.makeText(this@SplashActivity, "已经安装内核", Toast.LENGTH_SHORT).show()
}
}
startInstallX5LocationCore
是封装好的方法,
kotlin
fun startInstallX5LocationCore(
context: AppCompatActivity,
onSucceed: () -> Unit,
onFailed: (String) -> Unit
) {
val num = 20
val index = intArrayOf(0)
val CORE_VERSION = 44286 //内核版本号
val CORE_NAME = if (is32BitAbi(context)) "tbs_core_046270_20230713164840_nolog_fs_obfs_armeabi_release.tbs" else "tbs_core_046281_20240119145442_nolog_fs_obfs_arm64-v8a_release.tbs" //内核文件名称
val path = context.filesDir.parent //存储路径
val fileFolder = "tbs"
try {
//复制X5tbs下的内核文件到终端
val isExitCore: Boolean = copyAssetsToDir(context, fileFolder, path, onProgress = {
})
if (isExitCore) {
val installPath = path + File.separator + fileFolder + File.separator + CORE_NAME
Log.d("X5", "安装内核地址:$installPath")
//开始安装
QbSdk.installLocalTbsCore(context, CORE_VERSION, installPath)
val timer = Timer()
timer.schedule(object : TimerTask() {
override fun run() {
QbSdk.initX5Environment(context, object : PreInitCallback {
override fun onCoreInitFinished() {
Log.d("X5", "onCoreInitFinished")
}
override fun onViewInitFinished(p0: Boolean) {
Log.d("X5", "onViewInitFinished_p0=$p0")
}
})
val version = QbSdk.getTbsVersion(context)
if (version > 0) {
Log.d("X5", "x5内核安装完成,版本号$version")
timer.cancel()
onSucceed()
} else {
Log.d("X5", "循环检验内核版本 " + version + ",计数:" + index[0])
index[0]++
//老式的系统版本,例如7.0 8.0这些配置较低的写入比较慢,估需要等待
if (index[0] > num) {
Log.d("X5", "超过" + num + "s")
timer.cancel()
onFailed("超过" + num + "s,取消安装")
}
}
}
}, 0, 1000)
}
} catch (e: java.lang.Exception) {
e.printStackTrace()
onFailed("本地离线内核安装异常,异常信息:" + e.message)
}
}
上面代码 把asset目录下的文件,复制到包下的内部文件目录,执行QbSdk.installLocalTbsCore
进行安装 ,而timer这个方法是为了低配的手机做的兼容,有些手机内存或者CPU快被拉满的时候会导致安装失败
debugx5.qq.com 是内核检测和安装内核页面,也是腾讯x5内核debug页
我们一起看看效果吧
结束语
如果本文对你有帮助,请转发让更多的朋友阅读。
也许这个操作只要你 3 秒钟,对我来说是一个激励,感谢。