各位大侠,鄙人遇到一个问题,被困扰有一段时间了,一直无法解决,请大家指点下。
1.预制条件:
Cocos2D-X版本 V3.2
ADT 23.0.2
NDK android-ndk-r10c
2.操作步骤
1)编写完代码后,在MAC机上用Eclipse编译打包生成A.apk文件
2)分别在Android 4.4、Android 4.2 、Android 5.1几个机子上运行A.apk文件,完全正常
3)将同一份代码传至Windows PC机,再次用Eclipse编译打包生成B.apk文件
4)分别在Android 4.4、Android 4.2 、Android 5.1几个机子上运行B.apk文件,在Android 5以下版本上,完全正常,但在Android 5.1的机器上运行,发现,所有基于Cocos C++的网络连接,request发出去以后,response一直未有响应,而同一个工程中用JAVA写的网络连接仍是正常的
3.问题分析
1)由于JAVA部分的网络链接正常,所有可以排除权限设置的问题
2)在百度搜索后发现有人说此种方案可以解决,尝试仍无效果
HttpClient::getInstance()->setTimeoutForConnect(2);
HttpClient::getInstance()->setTimeoutForRead(2);
```
3)代码逐行加打印,最后发现在Cocos2D-X的HttpClient.cpp文件中的perform函数
/// @param responseCode Null not allowed
bool perform(long *responseCode)
{
if (CURLE_OK != curl_easy_perform(_curl))
return false;
CURLcode code = curl_easy_getinfo(_curl, CURLINFO_RESPONSE_CODE, responseCode);
if (code != CURLE_OK || !(*responseCode >= 200 && *responseCode < 300)) {
CCLOGERROR("Curl curl_easy_getinfo failed: %s", curl_easy_strerror(code));
return false;
}
// Get some mor data.
return true;
}
```
中调用curl_easy_perform以后就没有返回了。
4)尝试将工程中的CURL换成Cocos2D-X 3.5中所包含的CURL,问题仍然一样
暂时没有新的进一步分析或者解决问题的思路了,所以向诸位大侠求教,请知道的大神不吝赐教!