2010-06-23 17 views
25

¿Puedo ejecutar una aplicación de Android a través del emulador y hacer que imprima cadenas en la consola de mi computadora? Por consola me refiero al lugar estándar en el que esperaría ver un System.out.println() en una aplicación java normal. Por lo tanto, si ejecutó la aplicación java desde el símbolo del sistema, verá println() s en el símbolo del sistema o si ejecutó el programa en eclipse lo verá en la pestaña Consola en la parte inferior.¿Hay alguna manera de imprimir en la consola en una aplicación de Android?

+2

Por qué no usar LogCat? –

+1

+1 Simplemente use LogCat –

+2

LogCat está disponible para usted en Eclipse a través de la perspectiva DDMS. – CommonsWare

Respuesta

33

Uso Log.d("YourTag", "YourOutput");

ver http://developer.android.com/reference/android/util/Log.html

+11

Existen varios métodos para la importancia de los registros: Log.v(), Log.d(), Log.i(), etc ... Tenga en cuenta también que el nivel API 8 (Android 2.2 Froyo) introdujo un nuevo método Log .wtf() - Qué terrible error;) LOL – Gawcio

+2

Para evitar tener que hacer un seguimiento de una etiqueta que me gusta: Log.d (getClass(). getSimpleName(), "YourOutput"); – rshdev

+2

@rshdev Sí, por supuesto. Solo quería dar un ejemplo de código sin ninguna dependencia de ninguna otra variable/código, etc. Dado que se trata más de la clase Log en sí misma. Incluso iría más allá y usar getClass.getName() en lugar de getSimpleName(), ya que a menudo también quieres filtrar por paquete (tu aplicación), no solo una clase. Con getName(), puedes hacer ambas cosas: por eso utilizo getName(). +1 tuyo. –

13

Por defecto, el sistema Android envía la salida stdout y stderr (System.out y System.err) a/dev/null. En los procesos que ejecutan la VM Dalvik, puede hacer que el sistema escriba una copia de la salida en el archivo de registro. En este caso, el sistema escribe los mensajes en el registro utilizando las etiquetas de registro stdout y stderr, ambos con prioridad I.

Para enrutar la salida de esta manera, detiene una instancia de emulador/dispositivo en ejecución y luego usa el shell comando setprop para habilitar la redirección de salida. Así es como lo hace:

$ adb shell stop 
$ adb shell setprop log.redirect-stdio true 
$ adb shell start 

El sistema conserva esta configuración hasta que finaliza la instancia del emulador/dispositivo. Para usar la configuración de manera predeterminada en la instancia del emulador/dispositivo, puede agregar una entrada a /data/local.prop en el dispositivo.

Puede encontrar más información al respecto en el Android Debug Bridge document.

También puede crear su propia clase para imprimir en la consola http://tech.chitgoks.com/2008/03/17/android-showing-systemout-messages-to-console/

Creo que esta pregunta ha sido contestada en StackOverflow ya How to output LogCat to Console?

Cuestiones relacionadas