web-dev-qa-db-fra.com

Javascript console.log () sur htc Android appareils et adb logcat

Je développe l'application en HTML qui appelle la fonction console.log() de JavaScript pour me fournir des journaux pendant le développement sur ce qui se passe dans le code de page Web.

Malheureusement, lorsque j'utilise la commande adb logcat Pour vérifier les journaux que je peux voir la sortie de toutes les autres applications, mais pas la sortie de mon code JavaScript. Je peux voir même le journal du navigateur Web que la page est chargée, mais pas console.log() Sortie de mon code JavaScript exécuté dans le navigateur Web.

Selon des informations sur - cette page ( http://developer.android.com/guide/webapps/debugging.html ) il devrait fonctionner.

Je teste sur HTC Wildfire et HTC Desire HD.


édité après plus de 6 mois

Après un certain temps et de l'expérience avec les différents appareils (téléphones, téléviseurs, décodeurs set, WebViews, UIWebViews ...) mon conseil est de faire la la connexion à distance à partir de JavaScript et ne pas compter sur le console.log () ou d'autres méthodes - voir l'affaire de Nice avec le chargement d'image ici .

Ne manquez pas la présentation ici J'espère que cela vous aide! Sévère

28
STeN

Dans le navigateur par défaut sur Android 2.3.3 (et vraisemblablement à partir de ce dernier), vous pouvez simplement utiliser la console JavaScript intégrée:

  • ouvrez le navigateur
  • aller à votre page Web
  • taper about:debug Dans la barre d'adresse et appuyez sur Entrée
  • vous verrez une section pour les options de débogage apparaissent si vous entrez dans les paramètres de l'application du navigateur.
  • cochez "Afficher la console JavaScript" si non déjà activé
  • actualiser votre page Web

En haut, vous verrez une barre étiquetée "Console JavaScript".

30
thruflo

J'utilise trois téléphones HTC différents, presque exclusivement et je n'ai jamais eu cette question. Voici quelques éléments à vérifier:

  1. Assurez-vous que le débogage USB est activé.
  2. Assurez-vous que votre webview a un ensemble de chromeclient. Le navigateur utilisé dans WebView n'entraîne pas la console.log ().
  3. Il devrait être facile de voir la sortie de ADB LOGCAT, mais de le faciliter, filtrer la sortie.

Activez le débogage USB:

  1. Déconnectez votre appareil de votre ordinateur.
  2. Aller à Paramètres -> Applications -> Développement -> Sélectionnez "Activer le débogage USB"
  3. Plugin à l'ordinateur. (Assurez-vous que les pilotes corrects sont installés pour utiliser adb - plus d'infos ici: http://developer.android.com/guide/developing/device.html ) ==)

Définissez une chromeclient Web qui remplace Onconsolemessage ():

//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;
    }
});

Plus d'informations sur Onconsolemessage () Ici: http://developer.android.com/reference/andrroid/webkit/webchromeclient.html#onconsolemessage (java.lang.string , int, java.lang.string)

Plus d'informations sur le débogage en général ici: http://developer.android.com/guide/webapps/debugging.html

Filtrer la sortie de ADB LOGCAT:

adb logcat tag-name:log-level *:S

nom-nom correspond à la chaîne spécifiée dans log.x Le niveau de journal correspond au niveau de journal que vous avez indiqué lors de l'appel de log.x <---

Exemple relatif au code ci-dessus:

adb logcat Your-Application-Name:D *:S

Cela affichera toutes les journaux de niveau D pour la balise correspondante, votre nom d'application et un silence tout le reste.

Plus d'informations sur le filtrage ADB ici: http://developer.android.com/guide/developing/tools/adb.html#logcat

J'espère que ça aide! Je sais que c'était un peu résumée des autres réponses, mais le fait est que toutes les étapes pour le faire fonctionner. :)

12
Jonathan

J'ai eu le même problème, je le résout en faisant ce qui suit:

1/Lorsque vous initialisez votre webview, ajoutez une classe de pont JavaScript:

appView.addJavascriptInterface(new JSBridge(), "JSBridge");

2/Créer la classe JSBridge avec une fonction de journalisation

class JSBridge {
  public void log(String msg){
   Log.d(msg);
  }
}

3/Dans votre JavaScript, vous pouvez maintenant appeler

JSBridge.log("my log message");

Pourrait être un peu surkill pour votre problème, mais vous pouvez également faire beaucoup plus avec cette solution

8
standup75

LogCat génère beaucoup de choses sur les périphériques en plus du vôtre afin que vous puissiez devoir filtrer cela.

Vous pouvez essayer de "grep" votre sortie de journal si vous l'avez marquée. Par exemple: ACORDING à votre article La sortie devrait ressembler à:

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

Si vous utilisez la commande (en supposant que vous utilisiez un système de système d'exploitation Linux, Mac ou autre chose avec une commande Grep)

adb logcat | grep -i "console"

il réduira la sortie du mot-clé spécifié dans ces guillemets. Si vous ajoutez une balise unique à votre sortie, vous pouvez également le filtrer afin que vous n'obtenez que des choses que vous souhaitez voir.

[ctrl]+c

arrêtera ce processus logcat.

4
kneo

Voir ceci: Comment afficher Console.log () Sortie dans l'application PhoneGap à l'aide d'Eclipse et HTC Desire HD?

Il semble que Console.Log soit désactivé sur les périphériques HTC exécutant Android 2.2.

Vous pouvez le contourner en utilisant Débogage à distance dans jsconsole.com .

3
Epeli

Essayez ce qui suit:

1) Ouvrez l'onglet Périphériques et assurez-vous que le périphérique que vous avez connecté est sélectionné/en surbrillance.

2) Assurez-vous que le débogage USB est activé sur votre appareil. Voici ce que vous devez faire pour cela:

2a) À partir de l'écran d'accueil, appuyez sur Menu, puis sur Paramètres> Applications> Développement.

2b) Assurez-vous que la case à cocher USB de débogage est sélectionnée.

0
Ameer Sheikh