Android debuggable = false导致Cordova / Phonegap Eclipse项目中的jQuery.ajax POST失败

时间:2013-01-16 17:17:00

标签: android eclipse jquery cordova cordova-2.0.0

我在Eclipse中构建了一个使用Cordova 2.0.0的Android应用程序。当使用Eclipse调试器构建并加载到手机上时,应用程序工作正常,但是当我在AndroidManifest文件中设置android:debuggable =“false”时,jQuery.ajax()POST失败。我没有告诉我LogCat跟踪中的失败原因。

这是jQuery.ajax调用:

jQuery.ajax({
    url: that.endpoint,
    data: that.data,
    dataType: "json",
    type: "POST",
    contentType: "application/json",
    success: successHandler,
    error: errorHandler,
    timeout: serviceTimeout
});

当android:debuggable =“true”时它工作正常并转到成功处理程序,但当它android:debuggable =“false”时它转到failureHandler,只有textStatus设置为“error”而没有其他任何指示为什么失败了。当它失败时,似乎帖子没有发生,因为我可以看到它没有点击我试图呼叫的网络服务。

有没有人知道为什么debuggable标志可能以这种方式影响我的应用程序?

“debuggable”标志会影响日志记录级别以外的其他内容吗?

任何提示或指示都将不胜感激。

干杯

2 个答案:

答案 0 :(得分:5)

找到原因。我的代码很好。问题在于我试图调用的Web服务的SSL证书。虽然我的浏览器说没关系,但是当我使用SSL证书检查程序(例如http://www.geocerts.com/ssl_checker)检查它时,它向我显示证书层次结构存在问题。修复证书允许我的代码工作。

我的应用程序的iPhone版本从来没有遇到这个问题,所以看来Android的SSL证书检查更加严格(并且在调试模式下运行时没有进行证书检查。)

答案 1 :(得分:0)

当您将应用设置为debug = false时,您必须指定应用获取其数据的URI。在调试模式下,您的权限是放宽的,而不是处于调试模式。请参阅此参考:http://developer.android.com/guide/topics/providers/content-provider-basics.html#Permissions

您的代码看起来很好,而且只有在将应用程序设置为更严格的debug = false时它才会失败,这告诉我您没有正确设置URI权限。无论如何,这就是我首先要看的地方。