¿El acceso a logcat necesita root?

Mi dispositivo ya está rooteado, por eso pregunto.

¿Necesita root para monitorear el flujo de logcat en el teléfono? Si ejecuto el comando logcat desde una Terminal en el teléfono, ¿funcionaría?

Respuestas (7)

Estas aplicaciones gratuitas en Market afirman poder mostrar su logcat y no mencionan la raíz. Solo le llevará unos minutos probarlos:

EDITAR: Gracias a @mente por recordarme que estas aplicaciones solo te permitirán ver el archivo de registro completo en versiones anteriores de Android. Android 4.1 incorporó un nuevo modelo de seguridad en torno a los archivos de registro, lo que significaba que las aplicaciones solo podían leer sus propios archivos de registro y entradas de archivos de registro, y no podían leer las entradas de archivos de registro escritas por el sistema u otras aplicaciones.

Sin embargo, todavía hay una forma para que el usuario de una aplicación genere un archivo de registro de las entradas de registro recientes de la aplicación para enviarlas a un desarrollador, y para que el propietario de un teléfono otorgue permisos para permitir que una aplicación lea el archivo de registro sin raíz completa, pero esto requiere que use un comando ADB, que desafortunadamente lo pone fuera del alcance de la mayoría de los usuarios de teléfonos normales:

Si desea que el usuario le brinde información de depuración, puede hacer que genere un informe de error con encendido + bajar volumen + subir volumen que incluye los registros y muchos otros datos, y muestra automáticamente su aplicación de correo electrónico para enviarlo todo. (más una captura de pantalla). Estábamos discutiendo que deberíamos tener una forma más fácil de generarlos también, voy a considerar agregar algo a la aplicación de configuración.

También comencé a introducir el concepto de un permiso de "desarrollo", que se clasifica como leer registros. Esto permite que la aplicación solicite el permiso, pero no lo obtenga durante la instalación. Sin embargo, puede otorgarlo con un comando de shell adb una vez que esté instalado. En algún momento más adelante, espero tener una interfaz de usuario en el sistema para hacer esto, pero vamos a posponerlo para tener cuidado con la forma en que lo presentamos.

Extracto de una publicación en Grupos de Google de Dianne Hackborn, ingeniera de Android Framework. Mi énfasis.

El comando ADB mencionado para otorgar permiso a una aplicación para leer los registros es:

adb shell pm grant <pkg> android.permission.READ_LOGS

Esta configuración debería sobrevivir a los reinicios y actualizaciones de la aplicación (pero no a las desinstalaciones/reinstalaciones).

A partir de Android 4.1, necesita acceso de root para leer los registros de otras aplicaciones. El desarrollador de CatLog publicó una explicación . Supongamos que estas aplicaciones funcionan para versiones < 4.1
Este acceso directo no funciona en el mío Android 4.1.2
Creé una utilidad para recopilar registros desde una PC: gist.github.com/hrj/5983971

No necesita rootear su teléfono para ejecutar adb logcatcon el SDK de Android, pero acabo de probarlo en mi Terminal Emulator y tuve que ser root (utilicé el sucomando, mi teléfono ya está rooteado) para ejecutar logcat en el terminal en mi teléfono.

Entonces sí: si tiene root en su teléfono, puede ejecutar logcat desde una terminal en su teléfono.

No, no necesita root para obtener información de logcat.

Para hacerlo, probablemente desee descargar el SDK de Android y ejecutar "adb logcat", usando la herramienta adb que viene con el SDK. Alternativamente, puede instalar el complemento ADT Eclipse y usar su práctico visor Logcat de transmisión.

quiero hacer esto desde el teléfono, no desde una máquina remota con el SDK

No, no necesita root para acceder a logcat. Mi dispositivo (Samsung Galaxy Note, Gingerbread 2.3.6 con ROM estándar) no está rooteado (¡todavía!) y he usado las siguientes formas de acceder al registro en mi dispositivo:

  • Aplicación CatLog
  • una aplicación Logcat
  • Aplicación SSHDroid activada y conectada al terminal del dispositivo mediante un cliente SSH
  • Usando Android SDK y ejecutandoadb logcat

Sin embargo, la aplicación Terminal no le permite ejecutar logcat y le da "permiso denegado". No estoy seguro de por qué.

sí, en Gingerbread... pero el Android de hoy requiere root.

Parece que no puede ejecutar logcat desde Terminal Emulator sin tener root en su teléfono. En este caso tienes que hacer su primero. AFAIK, proviene de los permisos de Android: Terminal Emulator simplemente no tiene suficientes permisos para ver el registro del dispositivo. Entonces el sistema dice Permiso denegado.

Por otro lado, como dijeron otros, hay muchas aplicaciones que le permiten ver el registro del dispositivo solo porque solicitan el permiso.

La aplicación Android System Info tiene la capacidad de generar información de registro en la pantalla que, por lo que puedo decir, es la misma información de registro que escupe logcat.

¿Tienes un enlace a esa aplicación, no puedo encontrarla en Market?
@GAThrawn En caso de que todavía esté interesado: página de inicio y enlaces de Google Play Store .

Logcat no necesita root. Simples: es un estándar de facto en todos los ámbitos con respecto a las diferentes versiones de Android y es parte de Android independientemente de si está rooteado o no, y es un medio estándar para diagnosticar problemas como, por ejemplo, instala una aplicación, el cierre forzado de la aplicación, se queja con el desarrollador de dicha aplicación, es muy probable que el desarrollador le pida "enviar el logcat" independientemente de si está rooteado o no.

aLogCat es una forma de recopilar la información, con la opción de iniciar sesión en el diseño de la página web o en texto sin formato, tenga en cuenta que si lo programa para iniciar sesión con una frecuencia determinada, como cada 15 minutos, la tarjeta SD se llenará con bastante rapidez.

Otro aspecto, el uso de logcat dependerá del kernel en términos de cuánto puede almacenar: en cualquier kernel que use la ROM, la fuente para el registro desde un nivel de kernel, donde reserva la memoria para el servicio logcat se puede encontrar drivers/staging/android/logger.cusando las definiciones apropiadas, por ejemplo:

DEFINE_LOGGER_DEVICE(log_main, LOGGER_LOG_MAIN, 64*1024) DEFINE_LOGGER_DEVICE(log_events, LOGGER_LOG_EVENTS, 256*1024) DEFINE_LOGGER_DEVICE(log_radio, LOGGER_LOG_RADIO, 64*1024) DEFINE_LOGGER_DEVICE(log_system, LOGGER_LOG_*10)

Nuevamente, el kilometraje variará, algunos desarrolladores de tales ROM optarán por minimizar el consumo para reducir los gastos generales de memoria...