赞
踩
在用TBS内置方式加载x5内核一直下裁不了,一直报如下错。
下载内核代码
/**
* 初始化腾讯sdk
*/
private void initTBS(final Context applicationContext){
//搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
//该方法默认为 false,表示当手机内没有 X5 内核并且为非wifi环境,允许下载x5内核
//QbSdk.setDownloadWithoutWifi(true);
QbSdk.setTbsListener(
new TbsListener() {
@Override
public void onDownloadFinish(int i) {
//下载结束时的状态,下载成功时errorCode为100,其他均为失败,外部不需要关注具体的失败原因
Log.e("QbSdk", "onDownloadFinish -->下载X5内核完成:" + i);
if (i !=100){
Log.e("QbSdk", "progress -->下载X5内核完成:" + i);
TbsDownloader.startDownload(applicationContext);
}
}
@Override
public void onInstallFinish(int i) {
//安装结束时的状态,安装成功时errorCode为200,其他均为失败,外部不需要关注具体的失败原因
Log.e("QbSdk", "onInstallFinish -->安装X5内核进度:" + i);
}
@Override
public void onDownloadProgress(int i) {
//下载过程的通知,提供当前下载进度[0-100]
Log.e("QbSdk", "onDownloadProgress -->下载X5内核进度:" + i);
}
});
QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
@Override
public void onViewInitFinished(boolean arg0) {
//x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
Log.e(TAG, " 加载内核是否成功 " + arg0);
if(!arg0){
Toast.makeText(getApplicationContext(),"X5内核加载失败,请确保网络连接正常,尝试重新启动应用",Toast.LENGTH_LONG).show();
}else{
int version=QbSdk.getTbsVersion(getApplicationContext());
Log.e(TAG, "内核版本号: " + version);
}
}
@Override
public void onCoreInitFinished() {
//x5内核初始化完成回调接口,此接口回调并表示已经加载起来了x5,有可能特殊情况下x5内核加载失败,切换到系统内核。
}
};
//x5内核初始化接口
QbSdk.initX5Environment(getApplicationContext(), cb);
}
无法更新
一直报无法下载内核com.esafenet.imt W/System.err: java.net.ConnectException: Failed to connect to cfg.imtt.qq.com/223.75.236.241:443
2021-11-20 18:01:55.291 27148-27282/com.esafenet.imt W/System.err: java.net.ConnectException: Failed to connect to cfg.imtt.qq.com/223.75.236.241:443
2021-11-20 18:01:55.291 27148-27282/com.esafenet.imt W/System.err: java.net.ConnectException: Failed to connect to cfg.imtt.qq.com/223.75.236.241:443
2021-11-20 18:02:11.359 27534-27556/com.esafenet.imt W/System.err: java.net.ConnectException: Failed to connect to cfg.imtt.qq.com/223.75.236.241:443
2021-11-20 18:02:11.359 27534-27556/com.esafenet.imt W/System.err: java.net.ConnectException: Failed to connect to cfg.imtt.qq.com/223.75.236.241:443
通过网上改配置方法,一直没用,如下图
下载内核还一直报错
W/System.err: java.net.SocketTimeoutException: failed to connect to cfg.imtt.qq.com/223.75.236.241 (port 80) from /192.168.1.64 (port 40826) after 20000ms
W/System.err: at libcore.io.IoBridge.connectErrno(IoBridge.java:191)
at libcore.io.IoBridge.connect(IoBridge.java:135)
W/System.err: at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
W/System.err: at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
W/System.err: at java.net.Socket.connect(Socket.java:621)
at com.android.okhttp.internal.Platform.connectSocket(Platform.java:182)
at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:145)
W/System.err: at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:116)
at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:186)
W/System.err: at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128)
at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289)
解决方法
直接下载最新的x5内核包,包下载地址
关于TBS内置TbsReaderViewmTbsReaderView方式打开文档x5内核无法下载问题,压缩包-互联网文档类资源-CSDN下载
在项目启动的时候,直接将包copy到项目文件夹中,完美解决x5内核问题,不用再在线下载内核包了。
在app启动的时候调用
FileUtils.copyAssetsTBS(getApplicationContext(), "TBS", "/data/user/0/com.xx.xx/app_tbs/");
copyAssetsTBS方法:
public static void copyAssetsTBS(Context context, String oldPath, String newPath) {
try {
String fileNames[] = context.getAssets().list(oldPath);// 获取assets目录下的所有文件及目录名
if (fileNames.length > 0) {// 如果是目录
File file = new File(newPath);
file.mkdirs();// 如果文件夹不存在,则递归
for (String fileName : fileNames) {
copyAssetsTBS(context, oldPath + "/" + fileName, newPath + "/" + fileName);
}
} else {// 如果是文件
InputStream is = context.getAssets().open(oldPath);
FileOutputStream fos = new FileOutputStream(new File(newPath));
byte[] buffer = new byte[1024];
int byteCount;
while ((byteCount = is.read(buffer)) != -1) {// 循环从输入流读取
// buffer字节
fos.write(buffer, 0, byteCount);// 将读取的输入流写入到输出流
}
fos.flush();// 刷新缓冲区
is.close();
fos.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
截图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。