web-dev-qa-db-ja.com

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

28
STeN

Android 2.3.3(およびそれ以降)のデフォルトブラウザでは、組み込みのJavaScriptコンソールを使用するだけです。

  • ブラウザを開きます
  • あなたのウェブページに行く
  • タイプabout:debugをアドレスバーに入力してEnterキーを押します
  • ブラウザアプリの設定に移動すると、デバッグオプションのセクションが表示されます。
  • まだ有効になっていない場合は、[JavaScriptコンソールを表示]を選択します
  • ウェブページを更新してください

上部に、「JavaScriptコンソール」というラベルの付いたバーが表示されます。

30
thruflo

私は3種類のHTC電話をほぼ独占的に使用しており、この問題が発生したことはありません。確認することがいくつかあります。

  1. USBデバッグが有効になっていることを確認します。
  2. WebviewにWebChromeClientが設定されていることを確認してください。 Webviewで使用されるブラウザはconsole.log()を実装していません。
  3. Adb logcatの出力は簡単に確認できるはずですが、簡単にするために、出力をフィルタリングします。

USBデバッグをオンにします:

  1. デバイスをコンピュータから取り外します。
  2. [設定]-> [アプリケーション]-> [開発]-> [USBデバッグを有効にする]を選択します。
  3. コンピュータへのプラグイン。 (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

それが役に立てば幸い!他の回答を少しまとめたものだと思いますが、実際には、それを機能させるためにすべてのステップを踏みます。 :)

12
Jonathan

私は同じ問題を抱えていました、私はそれを次のようにして解決します:

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");

あなたの問題には少しやり過ぎかもしれませんが、その解決策でもっとたくさんすることもできます

8
standup75

Logcatはあなたのデバイスに加えて多くのデータをデバイスで生成するので、これをフィルタリングする必要があるかもしれません。

タグ付けしている場合は、ログ出力を「grep」してみてください。例:記事によると、出力は次のようになります。

Console: Hello World http://www.example.com/hello.html :82

コマンドを使用する場合(Linux、Mac OSなどをgrepコマンドで使用していると想定)

adb logcat | grep -i "console"

これらの引用符で囲まれたキーワードに出力が削減されます。一意のタグを出力に追加した場合、これをフィルタリングして、見たいものだけを取得することもできます。

[ctrl]+c

このlogcatプロセスを停止します。

4
kneo

これを参照してください: EclipseおよびHTC Desire HDを使用してPhoneGapアプリでconsole.log()の出力を表示する方法

Android 2.2を実行しているHTCデバイスではconsole.logが無効になっているようです。

jsconsole.comリモートデバッグ を使用して回避できます。

3
Epeli

以下を試してください:

1)[デバイス]タブを開き、接続したデバイスが選択/強調表示されていることを確認します。

2)デバイスでUSBデバッグが有効になっていることを確認します。これを行うには、次のことを行う必要があります。

2a)ホーム画面でMENUを押し、次に設定>アプリケーション>開発をタップします。

2b)USBデバッグのチェックボックスが選択されていることを確認してください。

0
Ameer Sheikh