关于升级到quick-cocos2d-x-2.2.6版本android错误

当前版本:2.2.3rc
升级到版本:2.2.6

将所有引擎代码都替换完成后:
windows环境调整项目配置后运行正常。
android环境运行出现异常,这个异常表现类似以前见过的多线程调用jni的问题。是使用CCHTTPRequest时遇到的
ios还未测试。

现在的问题: android环境下报错,类找不到。 java.lang.Integer ,请问是引擎的bug吗? 之前的旧版本一切正常。
相关日志如下:

12-24 16:30:06.190: D/cocos2d-x debug info(8406): CCHTTPRequest - requestCURL entry
12-24 16:30:06.190: D/cocos2d-x debug info(8406): CCHTTPRequest - onRequest entry
12-24 16:30:06.190: D/cocos2d-x debug info(8406): CCHTTPRequest - connectJava entry
12-24 16:30:06.190: D/cocos2d-x debug info(8406): CCHTTPRequest - connectJava 1
12-24 16:30:11.285: D/cocos2d-x debug info(8406): CCHTTPRequest - connectJava exit
12-24 16:30:11.285: D/cocos2d-x debug info(8406): CCHTTPRequest - onRequest connect:0
12-24 16:30:11.345: D/cocos2d-x debug info(8406): CCHTTPRequest responed code:200
12-24 16:30:11.345: D/cocos2d-x debug info(8406): CCHTTPRequest - onRequest, get null responed string
12-24 16:30:11.345: W/dalvikvm(8406): trying to work around app JNI bugs, but didn’t find 0x420c3500 in table!
12-24 16:30:11.345: W/dalvikvm(8406): JNI WARNING: DeleteLocalRef(0x420c3500) failed to find entry
12-24 16:30:11.345: W/dalvikvm(8406): threadid=14: thread exiting with uncaught exception (group=0x41686498)
12-24 16:30:11.345: E/AndroidRuntime(8406): FATAL EXCEPTION: Thread-857
12-24 16:30:11.345: E/AndroidRuntime(8406): java.lang.NoClassDefFoundError: java/io/DataInputStream
12-24 16:30:11.345: E/AndroidRuntime(8406): at org.cocos2dx.lib.QuickHTTPInterface.getResponedString(QuickHTTPInterface.java:326)
12-24 16:30:11.345: E/AndroidRuntime(8406): at dalvik.system.NativeStart.run(Native Method)
12-24 16:30:11.345: E/AndroidRuntime(8406): Caused by: java.lang.NoClassDefFoundError: java/lang/Integer
12-24 16:30:11.345: E/AndroidRuntime(8406): at org.cocos2dx.lib.QuickHTTPInterface.getResponedHeaderByKeyInt(QuickHTTPInterface.java:316)
12-24 16:30:11.345: E/AndroidRuntime(8406): … 1 more
12-24 16:30:11.345: E/AndroidRuntime(8406): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
12-24 16:30:11.345: E/AndroidRuntime(8406): at org.cocos2dx.lib.QuickHTTPInterface.combinCookies(QuickHTTPInterface.java:391)
12-24 16:30:11.345: E/AndroidRuntime(8406): at org.cocos2dx.lib.QuickHTTPInterface.getResponedHeaderByKey(QuickHTTPInterface.java:299)
12-24 16:30:11.345: E/AndroidRuntime(8406): … 1 more

看错误的位置,好像是在解析cookie时,出错了,
楼主再取下最新的代码,尝试下

引擎代码是12月24号的。
已经是当前最新了。
这种找不到jdk中类的错误一般是出现在android平台下子线程中直接调用jni造成的。 所以我才怀疑是引擎的bug。

搞定了。 java代码中QuickHTTPInterface类的combinCookies方法分割cookie时没有判断数组长度。


public static String combinCookies(List<String> list, String strDomain) {
        StringBuilder sbCookies = new StringBuilder();

        String strKey = null;
        String strValue = null;
        String strExpire = null;

        for (String str : list) {
            String] parts = str.split(";");
            for (String part : parts) {
                String] item = part.split("=");
                if(item.length < 2){ // add by leeass
                    continue;
                }
                if ("expires".equalsIgnoreCase(item.trim())) {
                    strExpire = str2Seconds(item.trim());
                } else {
                    strKey = item;
                    strValue = item;
                }
            }

            if (null == strDomain) {
                strDomain = "none";
            }

            sbCookies.append(strDomain);
            sbCookies.append('\t');
            sbCookies.append("FALSE\t");       //access
            sbCookies.append("/\t");          //path
            sbCookies.append("FALSE\t");     //secure
            sbCookies.append(strExpire);    //expire tag
            sbCookies.append("\t");
            sbCookies.append(strKey);       //key
            sbCookies.append("\t");
            sbCookies.append(strValue);     //value
            sbCookies.append('\n');
        }

        return sbCookies.toString();
    }

刚出来就有问题 不是坑爹么