Problemas para acceder a los registros de mensajes en Jelly Bean con aLogcat

12

Resumen

He tenido problemas para acceder a los mensajes de registro K9 usando aLogcat, consulte a continuación para obtener más detalles. Lo que me gustaría saber es:

  • ¿Por qué no aparecen mensajes de registro de K9 en el visor de registros de aLogcat?
  • ¿Alguien tiene alguna sugerencia sobre cómo puedo ver el texto completo de los errores que ocurren al intentar sincronizar mis carpetas K9?
  • ¿Podría haber cambiado algo en Jelly Bean que llevó a la tala de K9 a dejar de funcionar?
  • Dado que aLogcat muestra muy pocos mensajes en general, ¿ha cambiado algo en Jelly Bean que podría significar que ya no puede acceder a todos los mensajes?

Detalle

Recientemente he tenido problemas de conexión con K9. Mis carpetas no se sincronizan y la lista de carpetas termina llena de errores de socket ( libcore.io.ErrnoException:) o errores de SSL ( javex.net.ssl.SSLException:), etc., donde debería estar la última hora verificada . Recibo diferentes mensajes según el problema que esté ocurriendo en ese momento, pero no puedo ver el texto completo del mensaje de error, por lo que es difícil adivinar cuál podría ser la causa.

Pensando que los archivos de registro podrían contener más información, seguí las instrucciones en Grabar un registro de depuración , habilité el registro de depuración en K9, instalé aLogcat e intenté mirar los registros. Lamentablemente, cualquiera que sea el búfer de registro que seleccione ( Principal , Eventos o Radio ), parece que no hay mensajes de K9.

Si agrego el (k9|AndroidRuntime)filtro de expresiones regulares sugerido , no veo nada en ninguno de los registros. Si lo elimino, Main contiene principalmente mensajes de recolección de basura, los eventos parecen contener principalmente mensajes de aLogcat y aún no he visto un mensaje de registro en Radio .

Si hace alguna diferencia, estoy usando un Nexus 7, pero habría pensado que el registro habría sido en una ubicación estándar que no cambiaría entre las versiones de Android.

Mark Booth
fuente

Respuestas:

24

¿Alguien tiene alguna sugerencia sobre cómo puedo ver el texto completo de los errores que ocurren al intentar sincronizar mis carpetas K9?

Parece que no hay forma de ver estos mensajes de registro en el dispositivo sin acceso de root , pero si tiene acceso de root, hay un par de opciones, ya sea otorgar los permisos requeridos a aLogcat o considerar usar un horrible hack TM para ver ellos directamente.

Ver los archivos de registro en su PC o estación de trabajo a través de adb

Si puede conectar su dispositivo Android a una PC o estación de trabajo, puede acceder a los registros mediante el adbcomando.

Para hacer esto en Windows, primero deberá instalar el SDK de Android (que requerirá el SDK de Java SE ) y agregar el android-sdk\toolsy android-sdk\platform-toolsa la ruta del sistema . Luego habilite la depuración de USB en su Nexus 7, conéctelo a través de USB e instale la interfaz ADB compuesta de Android desde android-sdk\extras\google\usb_driver(tuve que obligar a Windows XP a mirar aquí, no encontraría los controladores por sí mismo).

Para obtener detalles sobre cómo comenzar adba funcionar sin la instalación completa del SDK de Android, o en máquinas Mac o Linux, consulte la excelente respuesta de Izzy a ¿Hay una instalación mínima de ADB?

Luego puede abrir un shell (es decir, una cmdventana) y ejecutar el comando:

adb logcat k9:V *:S AndroidRuntime:E
  • He confirmado que esto funciona en mi Nexus 7 no rooteado.

Conceder permisos a aLogcat

Si tiene acceso de root , podría considerar otorgar el READ_LOGSpermiso a aLogcat , como se sugiere en esta publicación aLogcat / CatLog / Lumberjack no funciona? Haga esto ... en el foro xda-developers :

pm grant <pkg> android.permission.READ_LOGS

Para otorgar este permiso a alogcato alogcat.donate, usaría uno de los siguientes comandos, dependiendo de si está ejecutando la versión de donación o no:

pm grant org.jtb.alogcat.donate android.permission.READ_LOGS
pm grant org.jtb.alogcat android.permission.READ_LOGS

Según una publicación en desarrolladores de Android y el ticket , la concesión de permiso sobrevive al reinicio y actualización, pero no a la desinstalación / reinstalación.

Lamentablemente, dado que esto requiere acceso de root, ya sea que lo ejecute en el dispositivo o en mi PC (con el prefijo adb shell), solo aparece el error:

Neither user 12345 nor current process has android.permission.GRANT_REVOKE_PERMISSION
  • No puedo confirmar que esto funcione, ya que mi Nexus 7 no ha sido rooteado.

Considera usar un truco horrible TM

Si tiene acceso de root , podría considerar hacer logcat setuid root y ejecutar logcat desde el shell del dispositivo, como se sugiere en esta respuesta a mi ¿Cómo puedo acceder a los archivos de registro de Android en mi Nexus 7 sin acceso de root? pregunta:

chmod 04755 /system/bin/logcat
logcat k9:V *:S AndroidRuntime:E
  • Nuevamente, no puedo confirmar que esto funcione y probablemente solo lo usaría como último recurso , dadas las implicaciones de seguridad.

¿Por qué no aparecen mensajes de registro de K9 en el visor de registros de aLogcat ?

¿Podría haber cambiado algo en Jelly Bean que llevó a la tala de K9 a dejar de funcionar?

Dado que aLogcat muestra muy pocos mensajes en general, ¿ha cambiado algo en Jelly Bean que podría significar que ya no puede acceder a todos los mensajes?

Esto parece ser un cambio en Jelly Bean que afecta a todas las aplicaciones que pueden intentar leer los archivos de registro.

Aparentemente, el permiso READ_LOGS no se otorga a aplicaciones de terceros en Jelly Bean . Dado que este enlace parece no ser confiable:

Hoy probé mi aplicación en el nuevo emulador (api 16) antes de lanzarlo a Google Play. Resultó que Android ahora se niega a otorgar este permiso a aplicaciones de terceros. Esto es extraño porque revisé todos los cambios documentados de Jelly Bean y no pude encontrar nada que mencione el permiso READ_LOGS.

y después

El nivel de protección para READ_LOGS ahora es "firma | sistema | desarrollo". La nueva sintaxis de canalización para ProtectionLevel también no está documentada (consulte http://code.google.com/p/android/issues/detail?id=34785 ).

Mi sospecha es que aLogcat solo está viendo mensajes generados por sí mismo y es vm.

Para obtener más información, consulte las respuestas de Flow a mi pregunta ¿Qué tan activo debería esperar que esté mi archivo de registro del sistema Jelly Bean?

Mark Booth
fuente
IIRC adb logcattodavía puede obtener el registro completo de Android en Jelly Bean.
Flujo
No requiere root, pero debe habilitar adb en su dispositivo (generalmente en las opciones de desarrollador).
Flujo
@Flow: ahora he confirmado que puedo ver el registro en mi PC adb logcatdesde allí y he actualizado mi respuesta en consecuencia. Todavía es frustrante que no pueda encontrar ninguna forma de acceder a los registros sin acceso a la raíz desde el propio dispositivo.
Mark Booth
Es todo el punto en el cambio de registro JB que un usuario no root no puede acceder al registro completo del sistema.
Flujo
@Flow - Sí, y el punto principal de los mensajes de registro es que puedes usarlos para averiguar qué está pasando. JB hace que una aplicación como aLogcat sea bastante inútil, ya que ahora solo puede acceder a los mensajes de registro que ha creado.
Mark Booth
0

He visto este comportamiento en K9 cuando mi servidor de correo actualizó sus certificados SSL. La solución fue mantener presionada la cuenta, seleccionar Account settings -> Fetching mail -> Incoming servery simplemente presionar Nextlas páginas para confirmar su configuración hasta que aparezca la ventana emergente sobre el certificado (esto podría no aparecer si todo está bien con el certificado, el mío tenía un vhost incorrecto). Confirme el certificado y simplemente revise el resto de la configuración y su cuenta debería comenzar a funcionar.

onik
fuente
@ MarkBooth Quizás debiste haber preguntado eso, generalmente preferimos preguntas que no presuponen una solución.
Matthew leyó el
@MatthewRead Debo estar de acuerdo con Mark aquí: los 4 elementos en su resumen indican explícitamente que quiere ayuda con el problema de registro, y tampoco veo el "problema XY" aquí (solución presupuesta). K9 es claramente el ejemplo, pero tal vez el título de la pregunta debería ajustarse para subrayarlo: "Usar logcat para determinar la causa de los problemas" coincidiría (y enfocaría) mejor;)
Izzy
@ MarkBooth Yepp, tnx: mucho más claro ahora. ¡También gracias por la respuesta detallada! Manténganos actualizados sobre su progreso.
Izzy
¿Debo eliminar mi respuesta, ya que está completamente fuera de tema después de las ediciones y es probable que se rechace?
onik
Depende de usted onik. Como dije originalmente, agradezco que se haya tomado el tiempo para publicar una respuesta, pero ahora que he actualizado la pregunta, su respuesta parece aún más fuera de lugar. Supongo que siempre puedes esperar y ver si se vota por debajo de -3 para que puedas recoger tu insignia de presión de grupo . * 8 ')
Mark Booth