PhoneGapアプリをXcodeでデバッグしたいのですが、そのコンソールでjavascriptエラーを表示できません。
回答:
Cordova / PhoneGapアプリでJavaScriptエラーを表示およびデバッグする最も洗練された方法は、SafariブラウザーからiOSアプリのWebビューにWeb Inspectorを接続することです(ただし、Tom Clarksonがすでに述べたように、少なくともiOS6が必要です。 )。
または、iOS WebKit Debug Proxyをインストールした後、ChromeのWebInspectorをiOSデバイスに接続することもできます。これにより、LinuxまたはWindowsから検査を実行できるようになります。
iOSのHTML、CSS、JavaScriptへのリモートアクセスは、前述のデバッグプロキシの上にRemoteDebug iOS WebKitアダプターをインストールできるため、最近ではさらに柔軟になっています。このアダプターはWebKitリモートデバッグプロトコルをChromeデバッグプロトコルに変換するため、これらは(サポートされているすべてのプラットフォームで)代替のデバッグおよび検査ツールとして使用できるようになります。
ところで、Safari Web Inspectorを使用したリモートデバッグは、iOSシミュレーターと組み合わせても機能します。
iOSのバージョンごとに、リモートWeb検査を使用するためにDesktopSafariの特定の最小バージョンが必要になります。以下のリストを参照してください。
以下をドキュメントの先頭近くに貼り付けて、他のJavaScriptの前に実行されるようにします。
<script type="text/javascript">
window.onerror = function(message, url, lineNumber) {
console.log("Error: "+message+" in "+url+" at line "+lineNumber);
}
</script>
また、XcodeコンソールウィンドウでJavascriptエラーの詳細を表示して楽しんでください。
更新:上記の手法では、未定義の変数などのエラーがログに記録されます。ただし、コンマがないなどの構文エラーがあると、何もログに記録されずにスクリプト全体が破損します。
したがって、onDeviceReady関数の先頭に以下を追加する必要があります。
console.log('Javascript OK');
アプリの起動時にログウィンドウに「JavaScriptOK」が表示されない場合は、どこかに構文エラーがあることを意味します。
欠落しているコンマを探す手間を省くために、最も簡単な方法は、次のようなJavascriptバリデーターにコードを貼り付けることです。
http://www.javascriptlint.com/online_lint.php
エラーを見つけてもらいます。
うまくいけば、それはデバッグからいくらかの苦痛を取り除くでしょう。
0.9.2(本日リリース)では、console.logがログ用にプラットフォーム間で標準化されていることに注意してください(debug.logは非推奨)。
すべてのエラーをキャッチするiOSUIWebViewで公開されていないデスクトップWebViewで使用可能な関数があります(私はその機能をプライベートAPIを使用するプラグインにハッキングしようとしていますが、プラグインは開発専用です)、しかし今のところ、クリスが上で提案したことを行い、コードにtry catchブロックを置き、console.logを使用します
考えられる構文エラーをすばやくキャッチするために、開発時にデスクトップSafariにページをロードし、Webkitエラーコンソールですばやく更新します。
iOS 6を使用している場合は、(デスクトップサファリの開発メニューにある)サファリWebインスペクターをアプリに接続するだけで、完全なJavaScriptデバッグを取得できます。
起動エラーとプラグイン呼び出しなど、少し制限されている領域がいくつかありますが、それ以外のほとんどの場合はうまく機能します。
Xcodeでjavascriptのデバッグを機能させるために、次のことを確認します。
http://phonegap.com/2011/05/18/debugging-phonegap-javascript/
http://www.daveoncode.com/2010/01/12/debugging-phonegap-applications-using-xcode-console/
追加のトラブルシューティングに関する限り...
まず、PCのsafariでアプリを実行し、safariのデバッガー(または両方が同様のレンダリングエンジンを実行しているためChrome)を利用できます。これは、高度なロジックエラーや多くのAPIの問題には影響しませんが、少なくとも多くの問題(基本的なJavaScript、HTML5など)のトラブルシューティングに役立つはずです。
javascriptコンソールですべてのエラーを表示するには、このイベントリスナーを使用することに同意します
<script type="text/javascript">
window.onerror = function(err,fn,ln) {alert("ERROR:" + err + ", " + fn + ":" + ln );};
var errorVar = objectDoesntExists.properyDoesntExist;//this will simulate an error
</script>
ただし、cordovaプラグインがインストールされていない限り、XCodeの「コンソール」には表示されません。プロジェクトフォルダに移動し、次のように入力します。
? cordova plugin add cordova-plugin-console
これにより、javascriptコマンド 'console.log(' some string ')をXCodeに表示できるようになります。
gitなどが必要になることに注意してください...ただし、phonegapプロジェクトをxcodeで編集している場合は、おそらくそれが必要です。
PS console.logを使用する前に、cordova.jsスクリプトプラグインを配置してください。
<script type="text/javascript" src="/cordova.js"></script>
これが私のために働いた簡単な方法です:
呼び出して、Pythonを使用してhttpサーバーを起動します(私はPython 2.7を使用しました):
python -m SimpleHTTPServer
ブラウザにHTTPServerのアドレスを入力して、Safariでページを表示します。私にとって、URLは次のとおりです。
http://0.0.0.0:8000/
オープン開発ツール:
Chromeでは、これはalt + command + iです。コンソールタブを表示します。ページを更新する必要がある場合があります。
Safariの場合:Safari-> [設定]-> [詳細]-> [開発メニューの表示]をオンにします。開発メニュー->エラーコンソールの表示(またはalt +コマンド+ c)。ページを更新。Ctrlキーを押しながら5キーを押すと、[問題]タブが開きます。