4

Cordova 2.0.0 を使用する Eclipse でビルドされた 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 のみが「エラー」に設定され、失敗した理由を示すものは何もありません。 . 失敗すると、呼び出しようとしている Web サービスにヒットしていないことがわかるため、投稿が行われていないように見えます。

デバッグ可能フラグがこのように私のアプリケーションに影響を与える可能性がある理由を誰か知っていますか?

「デバッグ可能」フラグが影響するのは、ログ レベル以外の何ですか?

ヒントや指針をいただければ幸いです。

乾杯

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 に答える