28

HTML でアプリケーションを開発しています。これはconsole.log()Javascript から呼び出して、開発中に Web ページ コードで何が起こっているかについてのログを提供します。

残念ながら、adb logcatコマンドを使用してログを確認すると、他のすべてのアプリケーションからの出力は表示されますが、JavaScript コードからの出力は表示されません。ページが読み込まれたことを示す Web ブラウザーからのログも表示console.log()されますが、Web ブラウザーで実行された JavaScript コードからの出力は表示されません。

このページ( http://developer.android.com/guide/webapps/debugging.html )の情報によると、動作するはずです。

HTC WildFireHTC Desire HDでテストしています。


6か月以上経過後に編集

さまざまなデバイス (電話、テレビ、セットトップ ボックス、WebViews、UIWebViews...) でしばらく経験を積んだ後、私のアドバイスは、 console.log()やその他のメソッドに依存せずに、JavaScript からリモート ロギングを行うことです。ここに画像をロードするいいトリックです。

ここでのプレゼンテーションをお見逃しなく 。ステン

4

6 に答える 6

12

私は 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

それが役に立てば幸い!他の回答を少し要約しただけだったことは知っていますが、実際には、それを機能させるにはすべての手順が必要です。:)

于 2011-05-16T22:00:40.910 に答える
8

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

1/ WebView を初期化するときに、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");

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

于 2011-05-12T15:47:14.393 に答える
4

Logcat は、デバイスに加えてデバイス上で多くのものを生成するため、これをフィルタリングする必要がある場合があります。

ログ出力にタグを付けている場合は、ログ出力を「grep」してみることができます。例: あなたの記事によると、出力は次のようになります。

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

コマンドを使用する場合(Linux、Mac OS、またはgrepコマンドで他のものを使用していると仮定)

adb logcat | grep -i "console"

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

[ctrl]+c

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

于 2011-05-04T23:09:06.900 に答える
3

これを参照してください: How to display console.log() output in PhoneGap app using Eclipse and HTC Desire HD?

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

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

于 2011-05-06T10:44:46.097 に答える
0

次のことを試してください。

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

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

2a)ホーム画面で[メニュー]を押し、[設定]>[アプリケーション]>[開発]をタップします。

2b)[USBデバッグ]チェックボックスがオンになっていることを確認します。

于 2011-05-04T19:00:05.973 に答える