JavaScript console.log () en dispositivos HTC Android y adb logcat

Estoy desarrollando la aplicación en HTML que está llamando a la console.log() de Javascript para proporcionarme registros durante el desarrollo de lo que sucede en el código de la página web.

Desafortunadamente, cuando uso el comando adb logcat para comprobar los registros, puedo ver la salida de todas las demás aplicaciones, pero no la salida de mi código JavaScript. Puedo ver incluso el registro desde el navegador web que la página se carga, pero no console.log() salida de mi código JavaScript ejecutado en el navegador web.

De acuerdo con la información de esta página ( http://developer.android.com/guide/webapps/debugging.html ) debería funcionar.

Estoy probando en HTC WildFire y HTC Desire HD .


Editado después de más de 6 meses

Después de un tiempo y experiencia con diferentes dispositivos (teléfonos, televisores, decodificadores, WebViews, UIWebViews …) mi consejo es hacer el registro remoto desde JavaScript y no confiar en el console.log () u otros métodos. Bonito truco con la imagen de carga aquí .

No te pierdas la presentación aquí Espero que esto ayude! STENN

En el navegador predeterminado de Android 2.3.3 (y presumiblemente a partir de ese momento) simplemente puede utilizar la consola de JavaScript:

  • Abra el navegador
  • Ir a su página web
  • Escribe about:debug en la barra de direcciones y pulsa enter
  • Verás una sección para que aparezcan las opciones de depuración si ingresas en la configuración de la aplicación del navegador
  • Marque "Show JavaScript Console" si aún no está habilitado
  • Actualizar tu página web

En la parte superior, verás una barra denominada "Consola de JavaScript".

He estado usando tres teléfonos HTC diferentes, casi exclusivamente, y nunca he tenido este problema. Aquí hay algunas cosas para comprobar:

  1. Asegúrese de que la depuración USB esté habilitada.
  2. Asegúrese de que su Webview tiene un conjunto WebChromeClient. El navegador utilizado en Webview no implementa console.log ().
  3. Debe ser fácil ver la salida de adb logcat, pero para hacerlo más fácil, filtre la salida.

Activar la depuración USB:

  1. Desconecte el dispositivo de su computadora.
  2. Vaya a Configuración -> Aplicaciones -> Desarrollo -> Seleccione "Habilitar depuración USB"
  3. Plugin a la computadora. (Asegúrese de tener los controladores correctos instalados para usar ADB – más información aquí: http://developer.android.com/guide/developing/device.html )

Establezca un WebChromeClient que reemplace 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; } }); 

Más información en onConsoleMessage () aquí: http://developer.android.com/reference/android/webkit/WebChromeClient.html#onConsoleMessage(java.lang.String , int, java.lang.String)

Más información sobre depuración en general aquí: http://developer.android.com/guide/webapps/debugging.html

Filtrar la salida de adb logcat:

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

Tag-name coincide con la cadena especificada en Log.x log-level coincide con el nivel de registro que indicó al llamar Log.x <—

Ejemplo relativo al código anterior:

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

Esto mostrará todos los registros de nivel d para la etiqueta correspondiente, Your-Application-Name y silenciará todo lo demás.

Más información sobre el filtrado de anuncios aquí: http://developer.android.com/guide/developing/tools/adb.html#logcat

¡Espero eso ayude! Sé que fue un poco de resumen de las otras respuestas, pero, el hecho es, se necesita todos los pasos para que funcione. 🙂

Tuve el mismo problema, lo soluciono haciendo lo siguiente:

1 / al inicializar su webview, agregue una clase javascript bridge:

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

2 / crear la clase JSBridge con una función de registro

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

3 / en tu javascript puedes llamar ahora

 JSBridge.log("my log message"); 

Puede ser un poco excesivo para su problema, pero también puede hacer mucho más con esa solución

Logcat genera un montón de cosas en los dispositivos además de la suya por lo que puede tener que filtrar esto.

Puede intentar "grep" su salida de registro si lo ha etiquetado. Por ejemplo: según su artículo, la salida debería tener el siguiente aspecto:

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

Si utiliza el comando (suponiendo que está utilizando Linux, Mac OS o cualquier otra cosa con un comando grep)

 adb logcat | grep -i "console" 

Reducirá la salida a la palabra clave especificada dentro de estas comillas. Si agrega una etiqueta única a su salida, también puede filtrarla para que sólo consiga las cosas que desea ver.

 [ctrl]+c 

Interrumpirá este proceso logcat.

Vea esto: ¿Cómo mostrar la salida console.log () en la aplicación PhoneGap usando Eclipse y HTC Desire HD?

Parece que console.log está deshabilitado en dispositivos HTC con Android 2.2.

Puede evitarlo utilizando depuración remota en jsconsole.com .

Pruebe lo siguiente:

1) Abra la pestaña de dispositivos y asegúrese de que el dispositivo que ha conectado está seleccionado / resaltado.

2) Asegúrese de que la depuración USB esté habilitada en su dispositivo. Esto es lo que necesitas hacer para esto:

2a) En la pantalla de inicio, presione MENÚ y, a continuación, toque Configuración> Aplicaciones> Desarrollo.

2b) Asegúrese de que la casilla de verificación Depuración USB está seleccionada.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.