4

我有一个内置在 Eclipse 中的 Android 应用程序,它使用 Cordova 2.0.0。当使用 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”,没有其他任何东西表明它失败的原因. 当它失败时,似乎帖子没有发生,因为我可以看到它没有命中我试图调用的网络服务。

有谁知道为什么可调试标志可能会以这种方式影响我的应用程序?

除了日志级别之外,“可调试”标志还会影响什么?

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

干杯

4

2 回答 2

5

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

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

于 2013-01-22T14:30:58.163 回答
0

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

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

于 2013-01-16T17:41:13.613 回答