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.
- WebView en Android 4.4 y escala inicial
- Detección de servicio en red local mediante WebSockets
- Evitar que el navegador de Android cambie de escala en rotación sin establecer la densidad de destino-dpi en dispositivo-dpi
- Administrar dispositivos Android a través del navegador web desde un ordenador portátil mediante WiFI
- ¿Puedes lanzar la aplicación nativa de la cámara desde una aplicación web Html 5?
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
- Generar dirección desde Lat / Long en Android o REST
- ¿Hay alguna referencia / documentación del navegador de Android?
- Androide WebView alternativa para webapps
- El banner de instalación de la aplicación no funciona
- Mejor manera de crear un servicio Web en Android
- Eclipse android phonegap config.xml no funciona?
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:
- Asegúrese de que la depuración USB esté habilitada.
- Asegúrese de que su Webview tiene un conjunto WebChromeClient. El navegador utilizado en Webview no implementa console.log ().
- 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:
- Desconecte el dispositivo de su computadora.
- Vaya a Configuración -> Aplicaciones -> Desarrollo -> Seleccione "Habilitar depuración USB"
- 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.