腾讯浏览服务内核加载失败处理

1,674 阅读1分钟
class TbsInstance {

    fun initX5Environment(context:Context){
        try {
            val map = HashMap<String, Any>()
            map[TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER] = true
            map[TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE] = true
            if (!QbSdk.getTBSInstalling())
                map[TbsCoreSettings.TBS_SETTINGS_USE_PRIVATE_CLASSLOADER] = true
                
            QbSdk.initTbsSettings(map)

            QbSdk.setDownloadWithoutWifi(true)
            QbSdk.setTbsListener(object : TbsListener {
                override fun onDownloadFinish(i: Int) {
                    val tbsCoreInitFinish = P.getPreferences(TbsTAG, false)
                    LogUtil.e(TbsTAG, "QbSdk onDownloadFinish -->下载X5内核完成:" + i
                            + " tbsCoreInitFinish:" + tbsCoreInitFinish
                            + " isDownloading:" + TbsDownloader.isDownloading())
                    //[首次下载]
                    if (i != 100 && !tbsCoreInitFinish && !TbsDownloader.isDownloading()) {
                        QbSdk.reset(context)
                        TbsDownloader.startDownload(context)
                    }

                }

                override fun onInstallFinish(i: Int) {
                    LogUtil.e(TbsTAG,"QbSdk onInstallFinish -->安装X5内核进度:$i")
                }

                override fun onDownloadProgress(i: Int) {
                    LogUtil.e(TbsTAG,"QbSdk onDownloadProgress -->下载X5内核进度:$i")
                }
            })

            val preInitCallback = object : QbSdk.PreInitCallback {
                override fun onCoreInitFinished() {
                    LogUtil.e(TbsTAG, "QbSdk onCoreInitFinished")
                }

                override fun onViewInitFinished(arg0: Boolean) {
                    LogUtil.e(TbsTAG, "QbSdk onViewInitFinished -->内核加载 arg0:" + arg0
                                + " isDownloading:" + TbsDownloader.isDownloading())
                    //[存储合成标记 意义不大]
                    P.putPreferences(TbsTAG, arg0)
                    if (!arg0 && !TbsDownloader.isDownloading()) {
                        QbSdk.reset(context)
                        TbsDownloader.startDownload(context)
                    }
                }
            }
            QbSdk.initX5Environment(context,preInitCallback)
        } catch (e:Exception){
            e.printStackTrace()
        }
    }

    companion object {

        const val TbsTAG = "QbSdk"
        @Volatile
        private var tbsInstance: TbsInstance? = null

        fun getInstance(): TbsInstance =
            tbsInstance ?: synchronized(this){
                tbsInstance ?: createInstance().also {
                    tbsInstance = it
                }
            }

        private fun createInstance(): TbsInstance = TbsInstance()
    }
}

感谢

1.官方文档

2.# TBS腾讯浏览服务接入以及遇到的坑

3.其他忘了就不一一感谢了,具体配置查看官网