使用Downloader在安卓设备上报错

运行设备:小米pad2(x86架构), 系统安卓5.1;
构建环境:CocosCreator1.10.1 ( 构建时已包含x86);
问题:
用jsb.Downloader下载文件时,报错。
downloader.setOnTaskError(function(task, errorCode, errorCodeInternal, errorStr){

}.bind(this));

备注:在安卓其它设备上没有这个问题(如: 小米pad4&android8.0),
iOS设备也没这个问题。

AS 的debug错误日志:

10-08 18:12:44.043 12307-12722/*** W/System.err: javax.net.ssl.SSLException: Certificate for <> doesn’t match any of the subject alternative names: [img.ucdl.pp.uc.cn, api.flash.cn, cdn.osupdateservice.yunos.com, static.flash.cn, www.flash.cn, dl6.ztems.com, slient.ucdl.pp.uc.cn, apimini.flash.2144.com, dl1.ztems.com, alissl.ucdl.pp.uc.cn, iscsi.ucdl.pp.uc.cn, stage.admin.flash.cn, mini.flash.2144.com, tongji.flash.cn, test.flash.cn, oss.ucdl.pp.uc.cn, stage-api.flash.cn, admin.flash.cn, tool.flash.cn, tongji.flash.2144.com, static-stage.flash.cn, stage.flash.cn]
10-08 18:12:44.044 12307-12722/
W/System.err: at cz.msebera.android.httpclient.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:164)
at cz.msebera.android.httpclient.conn.ssl.BrowserCompatHostnameVerifier.verify(BrowserCompatHostnameVerifier.java:61)
at cz.msebera.android.httpclient.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:140)
at cz.msebera.android.httpclient.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:114)
at cz.msebera.android.httpclient.conn.ssl.SSLSocketFactory.verifyHostname(SSLSocketFactory.java:569)
10-08 18:12:44.045 12307-12722/*** W/System.err: at cz.msebera.android.httpclient.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:544)
at cz.msebera.android.httpclient.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:409)
at cz.msebera.android.httpclient.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:479)
at cz.msebera.android.httpclient.conn.scheme.SchemeSocketFactoryAdaptor.connectSocket(SchemeSocketFactoryAdaptor.java:66)
at cz.msebera.android.httpclient.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:177)
at cz.msebera.android.httpclient.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:145)
at cz.msebera.android.httpclient.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:131)
at cz.msebera.android.httpclient.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:611)
at cz.msebera.android.httpclient.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:446)
at cz.msebera.android.httpclient.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:879)
at cz.msebera.android.httpclient.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
10-08 18:12:44.046 12307-12722/*** W/System.err: at com.loopj.android.http.AsyncHttpRequest.makeRequest(AsyncHttpRequest.java:146)
at com.loopj.android.http.AsyncHttpRequest.makeRequestWithRetries(AsyncHttpRequest.java:177)
at com.loopj.android.http.AsyncHttpRequest.run(AsyncHttpRequest.java:106)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)

求大神分析

可以试试绕过证书验证,自己网上查下,类似代码。

多谢大神~! @kenshino
请问这段代码在哪儿修改?

应该是加在这个位置,上面贴的只是个思路。

1赞

多谢大神~! @kenshino
这个方法可行,
已经紧急处理!

请问这是因为安卓系统版本的原因,
还是x86架构的原因?@kenshino

是安卓系统版本的原因。

多谢~! @kenshino :gift: