HTCのJavascript console.log()Androidデバイスとadb logcat
私はHTMLでアプリケーションを開発しています。これは、Javascriptからconsole.log()
を呼び出して、開発中にWebページコードで何が起こったかについてのログを提供します。
残念ながら、_adb logcat
_コマンドを使用してログを確認すると、他のすべてのアプリケーションからの出力は表示されますが、JavaScriptコードからの出力は表示されません。 Webブラウザーからのログでさえ、ページが読み込まれたことは確認できますが、Webブラウザーで実行されたJavaScriptコードからのconsole.log()
出力は確認できません。
このページ ( http://developer.Android.com/guide/webapps/debugging.html )に関する情報によると、それは動作するはずです。
HTC WildFireおよびHTC Desire HDでテストしています。
6か月以上後に編集
いくつかの時間とさまざまなデバイス(電話、テレビ、セットトップボックス、WebViews、UIWebViews ...)の経験の後、私のアドバイスはリモートロギングを実行することですJavaScriptからconsole.log()または他のメソッドに依存しない-画像の読み込みに関するナイストリックを参照 here 。
プレゼンテーションをお見逃しなく こちら これがお役に立てば幸いです! STEN
Android 2.3.3(およびそれ以降)のデフォルトブラウザでは、組み込みのJavaScriptコンソールを使用するだけです。
- ブラウザを開きます
- あなたのウェブページに行く
- タイプ
about:debug
をアドレスバーに入力してEnterキーを押します - ブラウザアプリの設定に移動すると、デバッグオプションのセクションが表示されます。
- まだ有効になっていない場合は、[JavaScriptコンソールを表示]を選択します
- ウェブページを更新してください
上部に、「JavaScriptコンソール」というラベルの付いたバーが表示されます。
私は3種類のHTC電話をほぼ独占的に使用しており、この問題が発生したことはありません。確認することがいくつかあります。
- USBデバッグが有効になっていることを確認します。
- WebviewにWebChromeClientが設定されていることを確認してください。 Webviewで使用されるブラウザはconsole.log()を実装していません。
- Adb logcatの出力は簡単に確認できるはずですが、簡単にするために、出力をフィルタリングします。
USBデバッグをオンにします:
- デバイスをコンピュータから取り外します。
- [設定]-> [アプリケーション]-> [開発]-> [USBデバッグを有効にする]を選択します。
- コンピュータへのプラグイン。 (ADBを使用するために正しいドライバーがインストールされていることを確認してください-詳細はこちら: http://developer.Android.com/guide/developing/device.html )
onConsoleMessage():をオーバーライドするWebChromeClientを設定します
//Set the output prefix so you can filter adb logcat results later
public static final String TAG = "Your-Application-Name";
myWebView = (WebView) findViewById(R.id.webview);
//Not going to have much luck running JS without this:
myWebView.getSettings().setJavaScriptEnabled(true);
//Override onConsoleMessage() to output to the Log.
myWebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onConsoleMessage(ConsoleMessage cm) {
Log.d(TAG, cm.message() + " -- From line "
+ cm.lineNumber() + " of "
+ cm.sourceId() );
return true;
}
});
OnConsoleMessage()の詳細はこちら: http://developer.Android.com/reference/Android/webkit/WebChromeClient.html#onConsoleMessage(Java.lang.String 、 int、Java.lang.String)
一般的なデバッグの詳細はこちら: http://developer.Android.com/guide/webapps/debugging.html
adb logcatの出力をフィルターします:
adb logcat tag-name:log-level *:S
tag-nameは、Log.xで指定された文字列と一致しますlog-levelは、Log.xを呼び出すときに指定したログレベルと一致します<---
上記のコードに関連する例:
adb logcat Your-Application-Name:D *:S
これにより、一致するタグYour-Application-Nameのすべてのdレベルのログが表示され、それ以外はすべて沈黙します。
ここでadbフィルタリングの詳細情報: http://developer.Android.com/guide/developing/tools/adb.html#logcat
それが役に立てば幸い!他の回答を少しまとめたものだと思いますが、実際には、それを機能させるためにすべてのステップを踏みます。 :)
私は同じ問題を抱えていました、私はそれを次のようにして解決します:
1/Webビューを初期化するときに、JavaScriptブリッジクラスを追加します。
appView.addJavascriptInterface(new JSBridge(), "JSBridge");
2 /ログ機能を備えたクラスJSBridgeを作成する
class JSBridge {
public void log(String msg){
Log.d(msg);
}
}
3 /あなたのjavascriptで今呼び出すことができます
JSBridge.log("my log message");
あなたの問題には少しやり過ぎかもしれませんが、その解決策でもっとたくさんすることもできます
Logcatはあなたのデバイスに加えて多くのデータをデバイスで生成するので、これをフィルタリングする必要があるかもしれません。
タグ付けしている場合は、ログ出力を「grep」してみてください。例:記事によると、出力は次のようになります。
Console: Hello World http://www.example.com/hello.html :82
コマンドを使用する場合(Linux、Mac OSなどをgrepコマンドで使用していると想定)
adb logcat | grep -i "console"
これらの引用符で囲まれたキーワードに出力が削減されます。一意のタグを出力に追加した場合、これをフィルタリングして、見たいものだけを取得することもできます。
[ctrl]+c
このlogcatプロセスを停止します。
これを参照してください: EclipseおよびHTC Desire HDを使用してPhoneGapアプリでconsole.log()の出力を表示する方法
Android 2.2を実行しているHTCデバイスではconsole.logが無効になっているようです。
jsconsole.com で リモートデバッグ を使用して回避できます。
以下を試してください:
1)[デバイス]タブを開き、接続したデバイスが選択/強調表示されていることを確認します。
2)デバイスでUSBデバッグが有効になっていることを確認します。これを行うには、次のことを行う必要があります。
2a)ホーム画面でMENUを押し、次に設定>アプリケーション>開発をタップします。
2b)USBデバッグのチェックボックスが選択されていることを確認してください。